【发布时间】:2010-09-23 08:51:54
【问题描述】:
以与 codeigniter 类似的方式,我想捕获所有请求并将它们重写为 index.php 文件,该文件位于我的 Web 可访问文件夹的根目录中。与 codeigniter 上的示例不同,但我不想在重写之前检查文件是否存在(因为我不想允许直接访问任何文件)。
我使用以下重写规则取得了部分成功:
RewriteRule ^(.*)$ index.php/$1/ [L]
但是,我可以让它工作的唯一方法是在它之前添加一个重写条件,它会进行某种检查以确保请求不是针对 index.php,否则我会收到 500 内部服务器错误。我查看了错误日志,似乎是由于递归过多。我知道,如果请求 index.php 无论如何都没有关系,因为它们会命中正确的文件,但我不明白这种情况的必要性,而且当我不知道为什么它必须存在时,我觉得包括它很脏?
工作规则是……
RewriteCond %{REQUEST_URI} !^/index.php/
还值得一提的是,这种重写条件也很有效,但我不知道为什么需要它!
RewriteCond %{REQUEST_FILENAME} !index.php
【问题讨论】: