开发者

htaccess conditions + url rewrite

Currently, I have the setup in my htaccess so that example.com/dept/noc goes to: example.com/index.php?dept=dept&n=noc using

RewriteEngine On
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ i开发者_开发百科ndex.php?dept=$1&n=$2 [QSA]
RewriteCond %{SERVER_PORT} 80

I have a folder called upload, how would I ensure that url rewriting is not in effect (an exception) for the /upload/ folder, since

example.com/upload/file.doc doesn't work?


Try:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/upload/.*
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ index.php?dept=$1&n=$2 [QSA]
RewriteCond %{SERVER_PORT} 80


A more general approach would be to add a condition to not rewrite if the URL directly matches an existing file or directory:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

This way you don't have to maintain a list of /upload, /images etc. folders in your rewrite rules. If file.doc doesn't exist in /upload, the rewriting will get done however.


You can compare the match of the particular groups like this:

RewriteCond $1 !=upload
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ index.php?dept=$1&n=$2 [QSA]

Note that != indicates a lexicographical comparison but you can use a regular expression as well:

RewriteCond $1 !^upload$
RewriteRule ^([A-Za-z]+)/([A-Za-z]+)$ index.php?dept=$1&n=$2 [QSA]
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜