当前位置:  开发笔记 > 编程语言 > 正文

.htaccess!-f规则不起作用

如何解决《.htaccess!-f规则不起作用》经验,为你挑选了2个好方法。

我多年来一直在为我的CMS使用简单的mod_rewrite规则,现在我正在制作一个新版本,我看到rewriteCond没有意义 - 我有标准的"如果不是文件"但我仍然看到正在评估的rewriterules他们不应该这样做.我的重写代码:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)$ index.php?page=$1
RewriteRule ^([^/]+)/([^/]+)$ index.php?page=$1&var=$2

我加载/ page/var并且它可以正常工作index.php?page = page&var = var,但我尝试加载/css/file.css并加载index.php?page = css&var = file.css即使/ css /file.css 一个文件,因此甚至不应评估整个重写部分.

我从未见过htaccess显然无视自己的逻辑,有人可以帮我解决这个问题吗?有没有人遇到这样的事情?



1> Greg..:

RewriteCondition唯一适用于下一条规则.你要这个:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)$ index.php?page=$1

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)$ index.php?page=$1&var=$2


这很好,经过这么多年来这样做mod_rewrites,结果证明我的逻辑是偶然的...非常感谢

2> Merc..:

如果您使用的是Apache 2.2,那么您必须阅读:

http://amandine.aupetit.info/135/apache2-mod_rewrite/

剧透:你需要写的是:

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

芝加哥商业交易所.


我一直在寻找这个太久了,完全解决了我的问题(我不使用vhost,而是容器).谢谢!
推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有