1

在 htaccess 文件中,重写规则是否必须遵循顺序?比如,长的在前,短的在后或类似的东西?或者,是否可以将它们按任何顺序排列。我只有几个像下面这样的规则(大约 20 条),但这都是一团糟。

RewriteRule ^/?(backend)/(users)/(new|blocked)/([a-z0-9]+)/?$ /blah/users/index.php?type=$2&case=$3&offset=$4 [NC,L]
4

1 回答 1

1

重写规则的顺序在.htaccess. 您需要将最具体的规则放在顶部,最通用的(包罗万象)类型规则放在最后。

让我举个例子。假设您想要隐藏.php所有有效.php文件的扩展名,但想要将其余文件转发到 index.php,那么您需要首先编写 PHP 隐藏规则,如下所示:

# first try loading PHP file if available
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L,NC]

# not available then send it to /index.php?file=<file>
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php?file=%{REQUEST_URI}.php [L,QSA]
于 2013-10-08T09:33:11.620 回答