将特定的动态URL重定向到更漂亮/简单的URL?

时间:2012-01-25 19:52:24

标签: regex apache .htaccess redirect

我正在尝试通过我的.htaccess重定向页面,但它似乎没有用。

旧页:/ dyn /?q =客户%20参考& f = 1,1,1,1,1,1& c = 10,10,10,10,10,10& s = 1,1, 1,1,1,1,1&安培; ST = 1

新页面:/ customer-references /

认为它就像这样简单:

RewriteEngine On
RewriteCond %{QUERY_STRING}  ^q=customer(?:[\ +]|%20)reference&f=1$ [NC]
RewriteRule ^dyn/$ /1? [R=301,NE,NC,L]

但它似乎没有起作用。是因为原始页面的动态URL吗?

此外,我还尝试在.htaccess中直接进行301重定向。这似乎也不起作用:

redirect 301 /dyn/?q=customer%20reference&f=1,1,1,1,1,1&c=10,10,10,10,10,10&s=1,1,1,1,1,1,1&st=1 /customer-references/

另一次失败的尝试是:

RewriteCond %{QUERY_STRING} ^customer%20reference&f=1,1,1,1,1,1&c=10,10,10,10,10,10&s=1,1,1,1,1,1,1&st=1$
RewriteRule ^$ http://www.domain.com/customer-references/? [R=301,L]

然后,我试图对此进行修改:

RewriteCond %{HTTP_HOST} ^domain.com
RewriteCond %{QUERY_STRING} ^q=customer%20reference* [NC]
RewriteRule ^(.*)$ http://www.domain.com/customer-references/ [R=301,L]

我是否需要逃出&符号或空格(%20)?

1 个答案:

答案 0 :(得分:1)

无需转义%&,因为它们不是特殊字符。

以下适用于我。将.htaccess文件放在网站的根目录中。

RewriteEngine on
RewriteBase /

# match/dyn/?q=customer%20reference&f=[ANYTHING]
RewriteCond %{QUERY_STRING}  ^q=customer%20reference&f= [NC]
RewriteRule ^dyn/$ /customer-references/? [L,R=301]