我正在尝试实现一个前端控制器。所以我想将请求重定向到 index.php。这是我的.htaccess。
RewriteEngine On
# Redirect everything to the Front Controller
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule !^(css|images|files)/ index.php [NC,L]
目前,如果我访问以下网址,它可以工作:
http://devserver/myapp/
但是,如果我访问任何不能解析为 index.php 的 url,例如http://devserver/app/blog
,Apache 会告诉我它找不到 index.php:
在此服务器上未找到请求的 URL /absolute/path/to/myapp/index.php 。
但是该路径实际上存在于我的服务器上,所以我认为正在发生的事情是 Apache 正试图像浏览器一样访问该 url - 它不起作用,因为如果我输入: /absolute/path/to/myapp/index.我的浏览器中的php,它不起作用。因此,我决定将 .htaccess 中的最后一行更改为:
RewriteRule !^(css|images|files)/ http://myapp.com/index.php [NC,L]
但它仍然不起作用,因为现在当我检查$_SERVER[REQUEST_URI]
我的 PHP 代码时,它总是解析为,index.php
因为 Apache 发出了 HTTP 请求。
无论如何,有人可以告诉我我做错了什么,我可以做些什么来让 Apache 将所有内容重定向到 index.php?
谢谢,