有人可以帮我弄这个吗?我感觉我的头撞墙已经超过 2 小时了。
我已经在我的机器上安装了 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。
我在 Windows XP 64-bit
上,他们正在运行一些 Linux
与 PHP
在 CGI/FastCGI
模式下谁能建议可能是什么问题?
PS。如果这很重要,那就是 CodeIgniter
使用友好的 URL。
更新1:
mod_rewrite
已安装并打开。
我注意到的是,如果我将 RewriteRule
更改为 /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/
原文由 Michal M 发布,翻译遵循 CC BY-SA 4.0 许可协议
我也在为此而努力。我也在安装 Code Igniter。
goocher 没有 RewriteBase。这是我的.htaccess: