我想实现一个前端控制器。所以我想将请求重定向到index.php。这是我的.htaccess。RewriteRule无法按预期工作?
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:
请求的网址 /absolute/path/to/myapp/index.php 在此服务器上未找到。
但是这条道路确实存在我的服务器上,所以我认为正在发生的事情是Apache正在试图访问一个网址就像一个将浏览器 - 如果我键入它不工作,因为: /absolute/path/to/myapp/index.php在我的浏览器中,它不起作用。所以,我决定在我的.htaccess改变最后一行是:
RewriteRule !^(css|images|files)/ http://myapp.com/index.php [NC,L]
但它仍然无法正常工作,因为现在我在我的PHP代码检查$_SERVER[REQUEST_URI]
,它总是做出决议到index.php
,因为Apache发出了一个HTTP请求。
不管怎样,有人可以告诉我我做错了什么,我可以做些什么使Apache重定向到index.php?
谢谢,
怎么样'^重写规则!(CSS |图片|文件)/的index.php [NC,L]' – undone
它说,该请求的URL的index.php在此服务器上找到。 – myworkaccount
你有多个.htaccess吗? mod_rewrite是否启用? – Prix