目前,我在htaccess中进行了设置,以便example.com/dept/noc转到:example.com/index.php?dept=dept&n=noc using
RewriteEngine On
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ index.php?dept=$1&n=$2 [QSA]
RewriteCond %{SERVER_PORT} 80
我有一个名为upload的文件夹,我如何确保/ upload /文件夹的url重写不起作用(异常),因为
example.com/upload/file.doc不起作用?
答案 0 :(得分:3)
尝试:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/upload/.*
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ index.php?dept=$1&n=$2 [QSA]
RewriteCond %{SERVER_PORT} 80
答案 1 :(得分:2)
更通用的方法是在URL直接匹配现有文件或目录时添加不重写的条件:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
这样您就不必在重写规则中维护/ upload,/ images等文件夹列表。如果/ upload中不存在file.doc,则重写将完成。
答案 2 :(得分:1)
您可以比较特定群组的匹配,如下所示:
RewriteCond $1 !=upload
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ index.php?dept=$1&n=$2 [QSA]
请注意,!=
表示字典比较,但您也可以使用正则表达式:
RewriteCond $1 !^upload$
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ index.php?dept=$1&n=$2 [QSA]