我需要重定向以下内容:
我已经能够做到这一切,唯一的问题是我永远无法熟悉mod_redirect规则因此无法使其高效。在这里经历了几乎所有相关的问题,但仍然很少混淆,并且当然希望删除冗余......
所以这是我在.httaccess
中的代码# Remove www + force https on everything
RewriteCond %{HTTP_HOST} ^www\. [OR,NC]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [R=301,L,NE]
#Add Sub-directory for fixing old urls when site was in root
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/sub-directory/
#Only apply rules for above condition if requested file or directory doesn't exist
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /sub-directory/$1 [NC,R=301]
# If reqeust is made to only domain root then redirect to domain.com/sub-directory/
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ /sub-directory/ [L,R=301]
现在上面的内容可以重定向所有1,2,3,4条件,如上面开头的
但是有多个请求。 例如:对于条件3,它首先重定向到http://example.com - > https://example.com ---> http://example.com/sub-directory/
我知道,并不是什么大不了的事,可以忍受它,但是,它仍然可以像是:
# Remove www + force https on everything
RewriteCond %{HTTP_HOST} ^www\. [OR,NC]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://example.com/sub-directory%{REQUEST_URI} [R=301,L,NE]
但是上面也将所有内容重定向到子目录,因此没用。任何建议,如何使其高效和重点,即。仅在1个重定向内部实现所有条件?