URL重写和正则表达式匹配的实际目录名称

时间:2012-03-09 08:05:13

标签: php apache .htaccess url-rewriting

我使用Front Controller模式创建了一个应用程序,所以基本上所有内容都发送到index.php

这是我目前在.htaccess文件

中的内容
RewriteRule ^([a-zA-Z0-9]+)(\/([a-zA-Z0-9]+))?(\/([a-zA-Z0-9\/]+))?(\/)?$   
                   index.php?class=$1&method=$3&args=$5

(我不得不把这条线分成两条,用于演示,但你知道我的意思)

所以它工作正常但是如果我创建一个名为/js的目录,例如必须可以直接访问。这意味着,我不能在其中放入.htaccess文件并放置:

Deny from all

然后使用网址http://mysite.com/js访问我的网站,重定向到http://mysite.com/js/?class=js&method=foo&args=

Options -Indexes放在主.htaccess文件中并没有多大帮助。有什么想法吗?

欢迎任何澄清,我并不擅长解释事情。

由于

1 个答案:

答案 0 :(得分:1)

使用

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

从重定向规则中排除实际文件和目录(重定向规则不适用于真实文件和目录)。