2013-08-16 53 views
0

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

谢谢,

+0

怎么样'^重写规则!(CSS |图片|文件)/的index.php [NC,L]' – undone

+0

它说,该请求的URL的index.php在此服务器上找到。 – myworkaccount

+0

你有多个.htaccess吗? mod_rewrite是否启用? – Prix

回答

0

不确定,但试试这个。

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] 
+0

仍然无效。 Apache仍然使用我的Web服务器上的/absolute/path/to/index.php来查找index.php,它不能解析浏览器中的任何东西:(尽管如此,感谢 – myworkaccount

+0

它实际上是codeigniter方法。 –