2015-01-09 114 views
1

我有一些旧URL需要修复,因为论坛迁移。.htaccess - 重写查询字符串并重定向到目录

旧的URL的样子: http://www.example.com/forum/topic.asp?TOPIC_ID=666

我想他们重定向到: http://www.example.com/forum/missions/666

我的做法是这样的,但我抓我的头,因为它没有在所有的工作:

RewriteCond %{QUERY_STRING}  ^TOPIC_ID=(.*)$ [NC] 
RewriteRule ^/forum$  /forum/missions/%1  [NC,L,R=301] 
+0

这似乎是它的倒车。您似乎希望用户能够访问http://www.example.com/forum/missions/666并查看服务器解析为http://www.example.com/forum/topic.asp的内容? TOPIC_ID = 666。那是对的吗? – Ding 2015-01-09 22:31:49

回答

1

假设有在`/论坛/无的.htaccess,你可以在你的.htaccess根用这个第一条规则

RewriteCond %{QUERY_STRING} ^TOPIC_ID=([^&]+) [NC] 
RewriteRule ^forum/topic\.asp$ /forum/missions/%1? [NC,L,R=302] 

如果在/forum/ htaccess的,那么你可以使用这第一条规则/forum/.htaccess

RewriteCond %{QUERY_STRING} ^TOPIC_ID=([^&]+) [NC] 
RewriteRule ^topic\.asp$ /forum/missions/%1? [NC,L,R=302] 
+1

谢谢,第一个只是像预期的那样工作。我可以从这里继续使用这个语法:) – 2015-01-09 22:42:01

+0

不客气,很高兴它解决了。 – anubhava 2015-01-09 22:44:53

0

我建议这一点,但真的不能从这里:)

尝试
+0

你不能那样做,因为查询字符串(在?之后的部分)不在RewriteRule使用的字符串中。 – Croises 2015-01-09 23:27:21

+0

我肯定需要一个关于这方面的教训:) – sodawillow 2015-01-09 23:29:15

+0

我学习所有anubhava ;-) – Croises 2015-01-09 23:29:58