我的.htaccess规则不起作用

时间:2013-06-25 16:16:06

标签: apache .htaccess

我希望我的所有网址都匹配模式为

/released/2013/iron-man 
/released/2013/abc-of-death 
/released/2012/saw6

重定向到

/released/1.php

我也可以这个名字。

我将此规则添加到我的.htaccess文件中,但它无法正常工作

RewriteRule ^released/([0-9]+)/?$ /released/1.php?id=$1 [L]

3 个答案:

答案 0 :(得分:1)

尾随问号与可选的结尾匹配/不是您想要的结果。

^released/([0-9]+)/iron-man$

RewriteRule ^released/([0-9]+)/(.+)$ /released/1.php?id=$1+$2

答案 1 :(得分:1)

问题是你在第二次斜杠后有$,但你有第二次斜杠之后的电影名称,如iron-man等。删除$,因为你没有匹配它。

确保通过httpd.conf启用了mod_rewrite和.htaccess,然后将此代码放在.htaccess目录下的DOCUMENT_ROOT中:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(released)/([0-9]+)/ /$1/1.php?id=$2 [L,QSA,NC]

答案 2 :(得分:0)

未指定特定外部域的RewriteRule始终在内部执行。要在最后添加[R=301],或者根据您需要的重定向类型添加301,使其重定向,但通常$就可以了。< / p>

除此之外,您编写的正则表达式不允许扩展URL - 删除尾随/?。之后,RewriteRule ^released/([0-9]+) /released/1.php?id=$1 [L,R=301] 部分没有实际意义,因此您也可以删除它。

结果行显示为:

{{1}}