在mod_rewrite中省略文件夹和少量脚本

时间:2015-11-20 14:46:27

标签: php apache .htaccess mod-rewrite

我有以下问题。我的.htaccess看起来像这样

RewriteEngine On

RewriteBase /phpuserarea/

RewriteCond %{REQUEST_URI} !^mod/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1?%{QUERY_STRING} [L]


ErrorDocument 404 /phpuserarea/404/index.php

但是每当我尝试直接访问mod目录中的任何内容时,服务器都会以404响应。

其他问题是,除了index.php我想允许直接访问让我们说testa.php和testb.php

这些是我的ajax文件,我似乎无法找到解决方案。

1 个答案:

答案 0 :(得分:1)

这样做:

ErrorDocument 404 /phpuserarea/404/index.php
RewriteEngine On
RewriteBase /phpuserarea/

RewriteCond %{REQUEST_URI} !/mod/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php/$1 [L]

您需要RewriteCond %{REQUEST_URI}中的前导斜杠,最好不要使用锚^,因为.htaccess位于/phpuserarea/内。

此外,您不需要在目标中使用?%{QUERY_STRING},因为如果您的规则没有覆盖它,查询字符串会自动传递给目标。