在htaccess文件中,重写规则是否必须遵循命令?比如,长的第一个和较短的一个或类似的东西?或者,可以按任何顺序放置它们。我只有一些规则,如下面的规则(大约20个),但这都是一团糟。
RewriteRule ^/?(backend)/(users)/(new|blocked)/([a-z0-9]+)/?$ /blah/users/index.php?type=$2&case=$3&offset=$4 [NC,L]
答案 0 :(得分: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]