使用.htaccess重写子目录文件名时出现404错误求助
问题排查与修正方案
你的配置存在两个核心问题:
1. .htaccess文件位置错误
你将en.htaccess放在/en子目录下,但该目录下的.htaccess仅会处理以/en/开头的请求(比如www.mydomain.com/en/about-us),而你期望处理的是根路径的/about-us请求,这条规则根本不会被触发,因此返回404。
2. Rewrite规则目标路径冗余
即便你要处理/en/about-us这类子目录请求,在/en子目录的.htaccess中已经设置了RewriteBase /en/,规则目标应该写about.html而非/en/about.html,后者会导致路径重复(实际解析为/en/en/about.html),同样会触发404。
正确配置方案
场景1:访问www.mydomain.com/about-us打开/en/about.html
直接在根目录的.htaccess中新增以下规则:
# 根目录.htaccess新增规则 RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^about-us$ /en/about.html [L]
场景2:访问www.mydomain.com/en/about-us打开/en/about.html
将en.htaccess改名为.htaccess放在/en子目录下,内容调整为:
Options +FollowSymlinks RewriteEngine On RewriteBase /en/ RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^about-us$ about.html [L]
内容的提问来源于stack exchange,提问作者FreeMoor
相关产品推荐
相关产品推荐

