如果在文件系统中存在与冲浪者请求匹配的实际文件,我希望我的RewriteRule不生效。 所以如果有人去mysite.com/realfile.php?foo=bar,realfile.php是一个真正的文件,冲浪者得到服务realfile.php?foo =酒吧。 但是,如果有人去mysite.com/nonexistentfile.php和nonexistentfile.php不是一个真正的文件,那么RewriteRule应该解释并传递请求到process.php
我在.htaccess中有以下内容:
RewriteEngine on RewriteRule (.*)\.php$ process.php?id=$1 [QSA]
如果文件系统中没有与冲浪者的请求匹配的真实文件,则这起作用。 如果冲浪者进入realfile.php?foo = bar …,那么他们就不能工作,在这种情况下,他们碰到了RewriteRule。 它确实工作,如果他们只是做realfile.php,但我希望查询string仍然传递到真实文件,如果存在。 我以为本地文件系统总是优先于RewriteRule?
我可能会提出如下的build议(类似于WordPress的使用):
RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L]
-f标志检查现有文件,-d标志检查目录 – 所以如果请求不是针对文件或目录,它将应用重写。