.htaccess只为1个特定的URL重写带有问号“?”的URL

时间:2013-09-18 23:36:35

标签: .htaccess mod-rewrite url-rewriting query-string

几个星期前我已经开始了一个话题。 但我现在遇到了一个与旧问题非常相似的新问题:.htaccess rewrite URL with a question mark "?"

我的目标是这个网址:

/mysite/component/users/?view=registration

重写为这个新网址:

mysite/registration.html

我当前的.htaccess获得了此代码:

RewriteBase /mysite

RewriteCond %{QUERY_STRING} ^view=(.*)$
RewriteRule ^component/users/?$ %1.html? [R=301,L]

它工作得很好。

但后来我注意到这个配置涉及所有以这样开头的URL:

/mysite/component/users/?view=

例如,此配置还涉及如下URL:

/mysite/component/users/?view=remind

这是我不想要的

我只想重写此网址:

localhost/mysite/component/users/?view=registration

1 个答案:

答案 0 :(得分:5)

RewriteBase /mysite

RewriteCond %{QUERY_STRING} ^view=(registration)$ [NC]
RewriteRule ^component/users/$ %1.html? [R=301,L]

如果您希望它只适用于registration,那么您可以指定一个catchall正则表达式。

另请注意,由于您使用了全局永久重定向,因此您可能需要清除浏览器缓存或使用其他浏览器即时查看更改。