我多年来一直在为我的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
Run Code Online (Sandbox Code Playgroud)
我加载/ page/var并且它可以正常工作index.php?page = page&var = var,但我尝试加载/css/file.css并加载index.php?page = css&var = file.css即使/ css /file.css 是一个文件,因此甚至不应评估整个重写部分.
我从未见过htaccess显然无视自己的逻辑,有人可以帮我解决这个问题吗?有没有人遇到这样的事情?
Gre*_*reg 27
该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
Run Code Online (Sandbox Code Playgroud)
Mer*_*erc 14
如果您使用的是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
Run Code Online (Sandbox Code Playgroud)
芝加哥商业交易所.
嗯,那应该可行。
尝试在 .htaccess 中设置以下属性:
RewriteLog /var/log/rewrite.log
RewriteLogLevel 3
Run Code Online (Sandbox Code Playgroud)
调试您的请求。请记住在完成后重置此值,否则您最终会得到一个已满的硬盘驱动器。
| 归档时间: |
|
| 查看次数: |
19636 次 |
| 最近记录: |