htaccess RewriteRule 字符串,带有主页参数
我需要将 url 重写
mydomain.com/?view=article&id=288:article_name&catid=116
为
mydomain.com/
如何做到这一点?
我尝试过
1.
RewriteRule ^?view=article&id=288:article_name&catid=116$ / [R=301,L]
没有成功。
2.
RewriteCond %{QUERY_STRING} ?view=article&id=288:article_name&catid=116
RewriteRule .*$ /? [L,R=301]
当我测试时,我得到“我们无法执行您的正则表达式,它有效吗?”在 RewriteCond 上。
I need to rewrite url
mydomain.com/?view=article&id=288:article_name&catid=116
to
mydomain.com/
How to do that?
I tried
1.
RewriteRule ^?view=article&id=288:article_name&catid=116$ / [R=301,L]
No success.
2.
RewriteCond %{QUERY_STRING} ?view=article&id=288:article_name&catid=116
RewriteRule .*$ /? [L,R=301]
When i test i get "We failed to execute your regular expression, is it valid?" on RewriteCond.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
QUERY_STRING
服务器变量本身不包含?
前缀。但是,?
是正则表达式中的特殊元字符(RewriteCond
指令的第二个参数),因此这是无效的。RewriteRule
模式.*$
也匹配一切,但您的示例只是根。请尝试以下操作:
首先使用 302(临时)重定向进行测试,以避免潜在的缓存问题,并确保在测试之前已清除浏览器缓存(默认情况下,浏览器会永久缓存 301)。
The
QUERY_STRING
server variable does not itself contain the?
prefix. However,?
is a special meta character in the regex (2nd argument to theRewriteCond
directive) so this is not valid.The
RewriteRule
pattern.*$
also matches everything, yet your example is the root only.Try the following instead:
Test first with a 302 (temporary) redirect to avoid potential caching issues and make sure you've cleared your browser cache before testing (301s are cached persistently by the browser by default).