0

我正在尝试实现一个前端控制器。所以我想将请求重定向到 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?

谢谢,

4

1 回答 1

0

Not sure but try this.

RewriteEngine On

# Redirect everything to the Front Controller
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
# RewriteRule !^(css|images|files)/ index.php [NC,L]
RewriteRule ^(.*)$ index.php/$1 [L]
于 2013-08-16T16:27:03.473 回答