使用.htaccess重定向URL

时间:2013-11-21 11:18:01

标签: php regex apache .htaccess redirect

我想使用.htaccess重定向网址。我有以下代码:

RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ index.php?action=$1&id=$2

如果我不在URL中使用dot,这是正常的。但是,如果我想访问例如此URL:

load/com.example.unique.id

然后我会得到错误404.当然,我可以理解为什么:我没有在我的表达中包含点。但是,如果我包含它,我将收到错误500.

我试图在表达式中包含点,如下所示:

RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-\.]+)$ index.php?action=$1&id=$2

知道为什么会这样吗?谢谢!

2 个答案:

答案 0 :(得分:2)

我认为问题出在[a-zA-Z0-9_-。]中的' - ',试试这个:

RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_\-.]+)$ index.php?action=$1&id=$2

答案 1 :(得分:1)

您可以使用点但连字符需要在字符类的最后或第一个位置,以避免转义。正确的基于正则表达式的规则将是这样的:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w.-]+)/([\w.-]+)/?$ index.php?action=$1&id=$2 [L,QSA]