正在使用.htaccess重定向URL


Redirecting URL with .htaccess

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

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

如果我不在URL中使用句点,这是正确的。但如果我想访问例如这个URL:

load/com.example.unique.id

那么我将得到错误404。当然,我能理解为什么:我的表达中没有包含点。然而,如果我包括它,我将得到错误500。

我试着在这个表达式中加入点:

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

知道为什么会发生这种事吗?谢谢

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

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

您可以使用句点,但连字符必须位于字符类的最后或第一个位置,以避免转义。正确的基于正则表达式的规则如下:

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