我想使用.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
知道为什么会这样吗?谢谢!
答案 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]