重定向重写规则工作

时间:2017-05-16 13:41:09

标签: apache .htaccess redirect mod-rewrite url-rewriting

重写

example.com/about-us?pageID=1 to example.com/about-us

在以下规则和其他规则中进行了尝试,但似乎没有任何工作

Redirect 301 /about-us?pageID=1  http://example.com/about-us

这个有效,但也会扰乱其他链接

RewriteCond %{QUERY_STRING} pageID=1
RewriteRule (.*) http://example.com/about-us? [R=301,L]

还有其他网页包含about-us/pageidproduct/pageID,这些页面无需受到干扰我只需要重定向此特定链接。

2 个答案:

答案 0 :(得分:0)

您应该可以在example.com/about-us

中使用此规则来.htaccess
RewriteEngine On
RewriteRule ^about-us$ /about-us?pageID=1 [L]

在测试之前,请确保清除缓存。

答案 1 :(得分:0)

要重定向该特定网址(实际上只是删除查询字符串),您应该添加RewriteRule 模式以匹配网址路径(就像您对Redirect所做的那样指令)。

RewriteCond %{QUERY_STRING} ^pageID=1$
RewriteRule ^(about-us)$ /$1? [R=301,L]

如您所见,您需要使用mod_rewrite(即RewriteCond)才能匹配查询字符串。

$1只是对RewriteRule 模式中匹配组的反向引用,即。 "约-我们&#34 ;.这样就可以避免重复"关于我们"。

在测试之前清除浏览器缓存,因为早期的301s将被缓存。因此,使用临时(302)重定向进行测试通常更容易。