【发布时间】:2011-06-05 11:41:12
【问题描述】:
在过去的两个小时里,我一直在尝试让某些东西正常工作,但没有任何运气。我已经在 google 和 apache docs 上寻求帮助,但我仍然找不到解决这个问题的方法。事情是这样的:
我有两个文件:
index.php
public/css/screen.css
如果不是文件,我希望在浏览器中键入的任何 URL 都重定向到 index.php?url=$1。如果是,它应该重定向到 public/$1。我尝试使用以下重写规则:
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule (.*) public/$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) index.php?url=$1 [QSA,L]
不幸的是,由于重写只发生在满足 RewriteCond 之后,前两个 RewriteCond 将针对 css/screen.css 而不是 public/css/screen.css 进行测试。
是否有一个魔术标志告诉 apache 执行 RewriteRule,测试 RewriteConds 是否为真,如果不是则撤消重写?你们会怎么做呢?
谢谢
【问题讨论】:
标签: apache mod-rewrite