.htaccess根据PHP参数重定向

时间:2015-07-28 14:37:04

标签: apache .htaccess redirect

我正在尝试使用我的.htaccess文件构建一些重定向来处理一些旧的论坛网址。我希望根据PHP参数(主题ID)进行重定向。

例如,像

RewriteEngine On
RedirectPermanent /forum/viewtopic.php?t=123 /page1.html
RedirectPermanent /forum/viewtopic.php?t=345 /page7.html
RedirectPermanent /forum/viewtopic.php?t=89 /page3.html

旧URL和新URL彼此无关(不需要保留PHP参数或其他内容)。我想在我的.htaccess文件中手动决定如何为每个主题ID做什么。

但我无法轻易做到这一点。我尝试了很多东西,但没有任何作用。

这可能吗?有什么想法吗?

非常感谢!

编辑:其他问题:我想将所有文件夹/论坛的全局重定向添加到站点的根目录(“/”)。我想我可以把它放在其他人之后,所以如果没有其他规则被歪曲,那么这个将会被扼杀。

我正在尝试一些像

这样的事情
RewriteRule ^forum /? [L,R=301]

但到目前为止我尝试的所有内容都将我重定向到“page1.html”(我的第一条规则)。知道为什么吗?非常感谢!

1 个答案:

答案 0 :(得分:1)

您无法使用mod_alias的RedirectRedirectMatch等匹配查询字符串。您需要使用mod_rewrite并匹配%{QUERY_STRING}变量:

RewriteEngine On

RewriteCond %{QUERY_STRING} ^t=123$
RewriteRule ^forum/viewtopic\.php$ /page1.html? [L,R=301]

RewriteCond %{QUERY_STRING} ^t=345$
RewriteRule ^forum/viewtopic\.php$ /page7.html? [L,R=301]

RewriteCond %{QUERY_STRING} ^t=89$
RewriteRule ^forum/viewtopic\.php$ /page3.html? [L,R=301]

注意RewriteEngine是mod_rewrite指令,而不是mod_alias。所以它对RedirectPermanent指令没有任何影响。