有人可以帮我弄这个吗?我感觉自己已经用头撞墙两个多小时了。
我有Apache 2.2.8 + PHP 5.2.6
安装在我的机器上并且.htaccess
下面的代码工作正常,没有错误。
RewriteEngine on
RewriteCond $1 !^(index\.php|css|gfx|js|swf|robots\.txt|favicon\.ico)
RewriteRule ^(.*)$ /index.php/$1 [L]
我的托管提供商服务器上的相同代码给出了 404 错误代码和输出only: No input file specified.
index.php 就在那里。我知道他们安装了 Apache(在任何地方都找不到版本信息)并且正在运行 PHP v5.2.8。
I'm on Windows XP 64-bit
,他们正在运行一些Linux
with PHP
in CGI/FastCGI
模式。谁能建议可能是什么问题?
附言。如果这很重要那就是为了CodeIgniter
使用友好的 URL。
Update1:
mod_rewrite
已安装并开启。
我注意到如果我改变RewriteRule
to /index.php?$1
(问号而不是正斜杠)它进入无限循环。无论如何,使用问号不是一个选择CodeIgniter
(必需)不会以这种方式工作。
当我直接请求index.php时,主页也可以工作:example.com/index.php
我开始认为 apache 可能会认为,一旦添加了尾部斜杠,它就不再是文件,而是文件夹了。如何改变这样的行为?
更新2:
我错了。
Apache 正确处理这些 URL。
要求http://example.com/index.php/start/
(主页)或任何其他有效地址均有效。
看来Apache
只是由于某种原因不转发查询。
更新3:
只是为了明确我想要实现的目标。
我想像这样重写地址:
http://www.example.com/something/ => http://www.example.com/index.php/something/
http://www.example.com/something/else/ => http://www.example.com/index.php/something/else/