.htaccess除脚本外的所有公共请求

时间:2013-12-24 10:12:53

标签: apache .htaccess mod-rewrite

我正在努力使用.htaccess文件。

我的文件夹结构如下:

-application
-config
-db
-library
-public
-scrips
-tmp
.htaccess (1)

htaccess 1的内容

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule    ^$    public/    [L]
   RewriteRule    (.*) public/$1    [L]
</IfModule>

这很棒!但是现在我正在执行对example.com/script/cron.php的请求,但它失败了,因为它被重定向为public。我怎么能防止这种情况?

1 个答案:

答案 0 :(得分:0)

不需要你的第一条规则。 (.*)也会匹配空字符串,因此$1将替换为...... well ...一个空字符串。要排除/script,您需要使用RewriteCond,如此:

RewriteCond %{REQUEST_URI} !^/script/
RewriteRule ^(.*)$ /public/$1 [L]