如何将具有特定参数的URL重定向到没有URL的URL?

时间:2013-10-21 04:51:55

标签: regex .htaccess

基本上,我正在尝试从我网站中的所有网址中删除参数。

例如:

http://www.mydomain.com.au/thispage.html?view=form
http://www.mydomain.com.au?view=form
http://www.mydomain.com.au/this-is-a-page.html?view=form

我要求上面的所有页面都使用没有此参数的版本,例如:

http://www.mydomain.com.au/thispage.html
http://www.mydomain.com.au
http://www.mydomain.com.au/this-is-a-page.html

重定向必须仅在view=form时发生,而不是在view等于其他任何内容时发生。

正则表达式和apache非常新,所以我不确定这是否可能。

到目前为止,我刚刚使用以下代码将它们指向404,尽管这会在网站管理员工具中引起一些问题:

RewriteCond %{HTTP_HOST} ^www\.mydomain\.com\.au [NC]
RewriteCond %{QUERY_STRING} (^|&)view=
RewriteRule ^ - [L,R=404]

1 个答案:

答案 0 :(得分:2)

使用以下htaccess代码

RewriteEngine on
RewriteBase /

RewriteCond %{QUERY_STRING} (^|&)view=form(&|$) [NC]
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI}? [R=301,L]

如果您想保留其他查询参数(例如?foo1=bar1&view=form&foo2=bar2),请使用

RewriteCond %{QUERY_STRING} ^(?:(.*)&)?view=form(?:(&.*))?$ [NC]
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI}?$1$2 [R=301,L]