我正在使用 mod_rewrite 为漂亮的 URL 运行 CMS,但是我在 CMS 下的子目录中运行了另一个站点,需要禁用 URL 重写,所以我在.htaccess
文件中添加了几行:
Options -MultiViews
Options +ExecCGI
AddHandler php5-cgi .php
Action php-cgi /cgi-bin/php-wrapper.cgi
Action php5-cgi /cgi-bin/php-wrapper.cgi
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# Added following two lines
RewriteCond %{REQUEST_URI} ^/dir/
RewriteRule ^(.+) - [PT,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
这有效,但是其中一个目录受到/dir/
保护mod_auth
,并且仍在被重写。如果我在这个目录的文件中取出Require valid-user
指令.htaccess
,一切都会很好。
这是.htaccess
受保护目录中的文件:
RewriteEngine off
AuthType Basic
AuthName "Administration"
AuthUserFile "/home/user/admin/.htpasswd"
require valid-user
任何帮助,将不胜感激。这一直困扰着我好几个星期!我做了一些谷歌搜索,其他人也遇到了这个问题,但我还没有找到解决方案。
我有同样的问题,迈克尔,终于找到了解决方案
希望对你有用!
替代曼尼:
并放弃您添加的两条规则(假设我已正确理解问题),并从受保护的.htaccess 中删除 RewriteEngine。
接下来,我将尝试将 Rewrite 语句包含在 <DirectoryMatch> 语句中。您可以简单地使用它与逆逻辑来匹配每个目录,但不应该重写的目录: