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

Bar*_*ock 5 .htaccess mod-rewrite url-rewriting query-string

几个星期前我已经开始了一个话题.但我现在遇到了一个与旧问题非常相似的新问题:.htaccess重写URL带有问号"?"

我的目标是这个网址:

/mysite/component/users/?view=registration
Run Code Online (Sandbox Code Playgroud)

重写到这个新网址:

mysite/registration.html
Run Code Online (Sandbox Code Playgroud)

我目前.htaccess得到了这段代码:

RewriteBase /mysite

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

它工作得非常好.

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

/mysite/component/users/?view=
Run Code Online (Sandbox Code Playgroud)

例如,这个配置也会涉及这样的URL:

/mysite/component/users/?view=remind
Run Code Online (Sandbox Code Playgroud)

这是我不想要的

我只想重写这个URL:

localhost/mysite/component/users/?view=registration
Run Code Online (Sandbox Code Playgroud)

Pri*_*rix 5

RewriteBase /mysite

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

如果你希望它只适用于registration那时你可以指定一个catchall正则表达式.

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