PHP/Apache Web服务器RewriteRule重写规则不生效404问题咨询
重写规则失效原因
- 路径匹配规则格式错误:
RewriteRule在目录级的.htaccess配置中匹配请求路径时,会自动剥离路径开头的斜杠/,你写的^/(accounts)/[0-9]+[/]?$规则包含前导斜杠,永远无法匹配到实际请求,所以规则完全不生效。 - 参数捕获逻辑错误:你需要提取的ID部分没有用括号分组,规则里唯一的分组是
(accounts),只能拿到值为accounts的$1变量,你写的$2不存在,就算规则匹配成功也无法传递ID参数。
修正后的重写规则
如果需要实现地址栏跳转,用如下配置:
RewriteEngine on RewriteRule ^accounts/([0-9]+)/?$ /account?$1 [R=302,L]
如果只需要服务器内部重写、地址栏保持不变,去掉R=302参数即可:
RewriteEngine on RewriteRule ^accounts/([0-9]+)/?$ /account?$1 [L]
.htaccess文件放置位置
子域名站点有独立的文档根目录,直接将.htaccess放在子域名对应的文档根目录下即可,无需放在主站点的www根目录。Hostinger平台默认子域名的文档根路径为domains/你的子域名/public_html,放到该目录下规则才会对子域名的所有请求生效。
内容的提问来源于stack exchange,提问作者Xavier Pedraza
相关产品推荐
相关产品推荐

