为啥 .htaccess 让

Posted

技术标签:

【中文标题】为啥 .htaccess 让【英文标题】:Why is .htaccess letting为什么 .htaccess 让 【发布时间】:2013-11-29 14:22:51 【问题描述】:

.htaccess 有点问题。如果目录是安全的,或者任何安全的子目录/文件,我想停止 mod rewrite 生效。我已将 .htaccess 设置如下:

RewriteEngine On

RewriteBase /

#skip next rule if url starts with secure/
RewriteRule ^/secure/(.*) - [L,S]

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


<Files 403.shtml>
order allow,deny
allow from all
</Files>

有人知道为什么它不起作用吗?我不能只关闭 mod rewrite,因为我需要为目录使用 htpassword。

【问题讨论】:

【参考方案1】:

在 per-directory-context 中,斜杠附加到目录的末尾(使 rewriterule 匹配的部分没有前导斜杠)。 Your first rule will therefore never match. 在这种情况下,我认为您可以简单地使用 %REQUEST_URI 获得否定条件。

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

【讨论】:

以上是关于为啥 .htaccess 让的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 .htaccess 文件在 cPanel 中不起作用?

为啥我的 .htaccess 代码不能完美地用于漂亮的 URL

为啥我的 .htaccess 301 重定向规则不起作用?

为啥这个 .htaccess 重定向不起作用?

为啥我的 .htaccess 文件的 301 重定向不能正常工作?

为啥我的 .htaccess 文件重定向到完整的服务器路径而不是相对路径?