当我尝试重定向页面时,没有任何反应。如果有人试图输入forum.example.com/forumdisplay.php?fid=1
,我希望将其重定向到forum.example.com/forum-1.php
。我是.htaccess
的新手,无法弄清楚。
.htaccess
档案:
Options -MultiViews
RewriteEngine on
Redirect 301 /forumdisplay.php?fid=([0-9]+).php /forum-$1.php
RewriteRule ^forum-([0-9]+)\.php$ forumdisplay.php?fid=$1 [L,QSA]
任何帮助将不胜感激。
答案 0 :(得分:1)
Redirect
(mod_alias)和RewriteRule
(mod_rewrite)属于两个不同的模块。你只需要使用mod_rewrite。尝试以下内容:
Options -MultiViews
RewriteEngine on
# Redirect direct requests for the "real" URL
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^fid=([0-9]+)
RewriteRule ^forumdisplay\.php$ /forum-%1.php? [R=301,L]
# Internally rewrite back to the "real" URL
RewriteRule ^forum-([0-9]+)\.php$ forumdisplay.php?fid=$1 [L,QSA]
(Redirect
也不使用正则表达式。)
更新:我已将?
附加到第一个RewriteRule
替换的末尾(即/forum-%1.php?
})。通过指定空查询字符串,它将从请求中删除查询字符串。或者,您可以在Apache 2.4 +上使用QSD
标志