.htaccess重定向301,重写不起作用

时间:2017-05-03 17:34:37

标签: .htaccess redirect mod-rewrite

当我尝试重定向页面时,没有任何反应。如果有人试图输入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]

任何帮助将不胜感激。

1 个答案:

答案 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标志