我需要放置一些重定向来强制执行某些规则并处理一些URL更改。
具体如下:
http
,请强制执行https
www
,请强制执行www
www.domainA.com
且路径不是开始,则为/en/
,/fr/
,/de/
或/es/
,强制执行/en/
www.domainB.com
且路径不是开始,则为/b_en/
,/b_fr/
,/b_de/
或/b_es/
,强制执行/b_en/
我一直试图让这个工作,所以任何时候只有一个301发生,我们最终没有301链。例如,对http://domainA.com
的请求可能会被重定向3次:
http://domainA.com
301 to ... https://domainA.com
301 to ... https://www.domainA.com
301 to ... https://www.domainA.com/en/
然而,我无法提供解决方案。
这将存在于.htaccess
文件中。
答案 0 :(得分:1)
您可以在.htaccess
:
# domainA
RewriteCond %{HTTP_HOST} domainA\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/(?:en|fr|de|es) [NC]
RewriteRule ^ https://www.domainA.com/en%{REQUEST_URI} [NE,L,R=301]
# domainB
RewriteCond %{HTTP_HOST} domainB\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/b_(?:en|fr|de|es) [NC]
RewriteRule ^ https://www.domainB.com/b_en%{REQUEST_URI} [NE,L,R=301]
# https & www
RewriteCond %{HTTP_HOST} (?:^|\.)(domainA\.com|domainB\.com)$ [NC]
RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{HTTPS} off
RewriteRule ^ https://www.%1%{REQUEST_URI} [NE,L,R=301]
永远不会超过一次重定向。