.htaccess 301重定向到没有查询字符串的同一页面

时间:2012-08-15 22:09:58

标签: .htaccess redirect

我想创建一个条件,如果页面在URL中有参数,例如?print = 1 - 将此页面重定向到自己而没有任何查询字符串。

示例:

我想要这个页面:

http://sos-med.com/en/specific_page.html?print=1&ok=1 

tp重定向(301)到没有查询字符串的同一个网址:

http://sos-med.com/en/specific_page.html

我的代码是:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^*print=*$ [NC]
RewriteRule ^(.*)$ %{REQUEST_URI}?

我没有测试服务器,所以你能告诉我我的代码是否正常?

上面的代码适用于网站上的每个页面。在实施该规则之前,我想尝试重定向一个特定的页面(参见我的例子) 如何修改代码才能使用“specific_page.html”?

我只想要.htaccess解决方案,而不是PHP代码。

2 个答案:

答案 0 :(得分:1)

您已关闭,%{QUERY_STRING}正则表达式不正确,并且您错过了301重定向标记:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^print=.*$ [NC]
RewriteRule ^(.*)$ %{REQUEST_URI}? [L,R=301]

试试。


  

谢谢,如果我想将单个特定页面重定向:sos-med.com/en/aaa.html?print=1&ok=1到sos-med.com/en/aaa.html? -

然后您将更改规则匹配的内容:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^print=.*$ [NC]
RewriteRule ^en/aaa.html$ %{REQUEST_URI}? [L,R=301]

答案 1 :(得分:0)

试试这个:

RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.*&)?print= [NC]
RewriteRule ^(.*)$ /$1? [L,R=301]