我正在尝试使用我的.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”(我的第一条规则)。知道为什么吗?非常感谢!
答案 0 :(得分:1)
您无法使用mod_alias的Redirect
,RedirectMatch
等匹配查询字符串。您需要使用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
指令没有任何影响。