Mod_rewrite(htaccess)QSA并从附加的查询字符串中删除字符

时间:2015-06-02 18:08:25

标签: apache .htaccess mod-rewrite redirect qsa

我一直在努力解决一些htaccess重定向问题。我只是花了一些时间阅读和搜索,无法得到适合我的方案的解决方案。

我正在将旧网站(ASP)的301重定向转换为新网站(Wordpress)。旧页面有参数查询,我需要处理它,但也从中删除'http://'字符串以重定向工作。

要重定向的示例网址(旧)如下所示:

重定向到:

http://www.domain.org/index.asp?documentID=2410&utm_source=IT+Travel+Reminder&utm_medium=Informz%2FnetFORUM&utm_campaign=IT%2FTravel+Reminder%2FMonthly+Monthly+Travel+Reminder&zbrandid=4050&zidType=CH&zid=28841368&zsubscriberId=1036792259&zbdom=http://my.informz.net

和.htaccess代码重定向它:

http://www.domain.org/permalink-2410/?qs=true&utm_source=IT+Travel+Reminder&utm_medium=Informz%2FnetFORUM&utm_campaign=IT%2FTravel+Reminder%2FMonthly+Monthly+Travel+Reminder&zbrandid=4050&zidType=CH&zid=28841368&zsubscriberId=1036792259&zbdom=my.informz.net

但是某种程度上没有像我预期的那样工作

RewriteCond %{QUERY_STRING} ^documentid=2410(&.*)$ [NC]
RewriteRule ^index\.asp(.*):(.*)$  http://www.domain.org/permalink/?qs=true%1%2 [L,R=301,QSA]
当我从查询字符串中删除RewriteCond %{QUERY_STRING} ^documentid=2410(&.*)$ [NC] RewriteRule ^index\.asp$ http://www.domain.org/permalink/?qs=true%1 [L,R=301,QSA] http://时,

正常工作。

我在哪里弄错了?

谢谢!

1 个答案:

答案 0 :(得分:1)

尝试此规则:

RewriteCond %{QUERY_STRING} ^documentid=(\d+)(&.+?)http://(.+)$ [NC]
RewriteRule ^index\.asp$ http://www.domain.org/permalink-%1/?qs=true%2%3 [L,R=302,NC,NE]

确保在测试之前清除浏览器缓存。