apache-2.2 – 如何使所有URL通过单个PHP文件运行?

这些URL中的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重写:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$/index.php?q=$1 [L,QSA]

这将透明地将您的URL重写为»index.php?q = foo / bar / baz«.

2.和3.行告诉重写引擎如果指向现有文件或目录,则不重写URL.这对于访问httpd服务器提供的真实文件是必要的.

转载注明原文:apache-2.2 – 如何使所有URL通过单个PHP文件运行? - 代码日志