2015-06-02 139 views
1

我一直在努力与一些htaccess重定向。我花了一些时间阅读和搜索,无法获得适用于我的场景的解决方案。Mod_rewrite(htaccess)QSA和删除附加查询字符串的字符

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

实例URL(旧)重定向的样子:

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 

重定向到:

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 

和的.htaccess代码并将其重定向到:

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://:

我在哪里犯了错误?

谢谢!

+0

上面的asp URL应该重定向到什么URL? – anubhava

+0

问题更新 – JackTheKnife

回答

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] 

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

+0

不知何故,整个'RewriteCond'不工作 - 对于'RewriteCond%{QUERY_STRING}^documentid =(\ d +)'只能正常工作 – JackTheKnife

+0

我已经在我的Apache上测试过这个规则,它工作正常。确保这是'RewriteEngine On'行下面的第一条规则。您必须输入以测试的网址应为: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' – anubhava

+0

我有'RewriteEngine On',并且在两台运行cPanel的不同服务器上测试过这个规则 - 两者都无法通过该条件 – JackTheKnife