url 采用这些形式的 MVC 系统如何通过单个 index.php 文件强制所有请求?
http://www.example.com/foo/bar/baz
http://www.example.com/goo/car/caz/SEO-friendly-name-of-the-object
http://www.example.com/hey/you
编辑:当我尝试下面的重写规则时,我收到此错误:
[error] [client 127.0.0.1] Invalid URI in request GET / HTTP/1.1
[error] [client 127.0.0.1] Invalid URI in request GET /abc HTTP/1.1
编辑:哦,这是/index.php 的完整内容。当我删除重写规则时,它会输出“/”或“/index.php”,否则我会得到 404。
<?php
echo htmlspecialchars($_SERVER['REQUEST_URI']);
?>
已解决:我在重写规则中的 index.php 前面添加了一个 / 然后它起作用了:
再次解决:原来 / 只需要因为我运行的是 2.2.4。当我升级到 2.2.11 时,不再需要 /。
如果您使用的是 Apache,请通过以下方式使用重写
mod_rewrite
:这会将您的 URL 透明地重写为 »index.php?q=foo/bar/baz«。
2. 和 3. 行告诉重写引擎不要重写指向现有文件或目录的 URL。这是访问 httpd 服务器提供的真实文件所必需的。
下面的代码使用 Apache 的 mod_rewrite 重写所有不指向要映射到 index.php 的物理文件或目录的 URL。最终结果将是:
重写规则:
解释:
上述两行都表明此规则不适用于常规文件 (-f) 或目录 (-d)。
有关如何创建 mod_rewrite 规则的更多信息可以从 Apache 网站收集: http ://httpd.apache.org/docs/2.2/mod/mod_rewrite.html 。