请求编写.htaccess RewriteRule:带斜杠参数的特定页面重写
解决Apache RewriteRule匹配带斜杠参数路径的问题
正确的重写规则
如果需要把所有以/page/开头、后面带任意斜杠参数的路径,重写成/anotherpage/开头的对应路径,用下面的规则:
永久重定向(URL栏会显示新路径)
RewriteRule ^page/(.*)$ /anotherpage/$1 [L,R=301]
内部重写(URL栏保持原路径,仅服务器内部跳转)
RewriteRule ^page/(.*)$ /anotherpage/$1 [L]
你之前的规则失效原因
- 正则匹配范围太窄:你写的
^page/$只能精确匹配/page/这个路径,完全覆盖不了/page/parameter1/parameter2这种带后续参数的路径。(.*)用来匹配/page/之后的所有内容,才能把参数传递过去。 - 目标路径错误:你的目标写的是
/anotherpage.php/$,既不符合你要的/anotherpage/参数格式,也没有把匹配到的参数代入进去,自然无法得到预期结果。
额外注意事项
- 确认Apache已经启用
mod_rewrite模块 - 如果用
.htaccess文件,要保证当前目录的Apache配置中AllowOverride设置为All,否则.htaccess里的规则不会生效 - 内部重写的情况下,要确保
/anotherpage/对应的后端程序能正确解析后续的参数路径
内容的提问来源于stack exchange,提问作者lars
相关产品推荐
相关产品推荐

