.htaccess中多语言子目录301重定向规则正确性确认
.htaccess中多语言子目录301重定向规则正确性确认
Hey there!我看了你当前的.htaccess规则和遇到的问题——阿拉伯语子目录/ar/的页面没触发预期的301重定向,咱们来一步步理清楚问题,然后给出合适的解决方案。
首先分析你现有规则的问题:
你目前针对/ar/子目录的规则是同时检查非www域名和请求路径以/ar/开头才会触发重定向,但如果用户直接访问的是带www的域名,或者已经使用HTTPS协议,这些条件就不满足,自然不会执行重定向。而且规则的顺序安排也导致部分场景下规则无法被触发。
接下来是更简洁且覆盖所有场景的正确配置方案:我们不需要单独针对/ar/子目录写规则,只要确保所有请求统一跳转到HTTPS + www域名,系统会自动保留原请求的路径(包括/ar/子目录的内容):
RewriteEngine On # 1. 将所有HTTP请求跳转到HTTPS(无论是否带www) RewriteCond %{HTTPS} off RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE] # 2. 将非www的HTTPS请求跳转到带www的HTTPS域名,自动保留所有请求路径(含/ar/子目录) RewriteCond %{HTTP_HOST} ^arianamedicaretour\.com$ [NC] RewriteRule ^ https://www.arianamedicaretour.com%{REQUEST_URI} [L,R=301,NE]
为什么这个配置能解决你的问题?
- 第一条规则先把所有HTTP请求(不管是www还是非www)都转到HTTPS协议,确保加密访问的基础要求。
- 第二条规则专门处理非www的HTTPS请求,跳转到带www的同域名,并且通过
%{REQUEST_URI}自动保留原请求的完整路径。比如用户访问http://arianamedicaretour.com/ar/some-page,会先被转到https://arianamedicaretour.com/ar/some-page,接着再转到https://www.arianamedicaretour.com/ar/some-page,完美覆盖你需要的/ar/子目录重定向场景。
如果你之后需要针对/ar/子目录做特殊的旧路径跳转(比如从其他过时路径转向/ar/),可以在上述基础上添加额外规则,但就当前描述的问题来看,上面的简化配置已经能解决ar页面不重定向的核心问题了。
备注:内容来源于stack exchange,提问作者ariana medicare
相关产品推荐
相关产品推荐

