使用.htaccess mod_rewrite在路径的开头插入脚本名称

时间:2010-11-02 19:50:30

标签: apache .htaccess mod-rewrite

我有一个htaccess url重写的问题,在localhost上运行正常但在我的托管(anhosting)上不起作用。

我需要将所有请求重定向到我的index.php页面。 这是一个例子:我想重定向

http://mydomain.com/this/is/a/page

http://mydomain.com/index.php/this/is/a/page

这是我的.htaccess:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]

在托管上我总是被重定向到index.php文件,但$ 1参数结果总是空白,所以我的自定义框架无法正确处理请求。

可能是什么问题?

抱歉我的英语不好,我希望我已经足够清楚......

2 个答案:

答案 0 :(得分:1)

听起来远程服务器已关闭AcceptPathInfo。该设置对您正在使用的效果负责。

尝试手动请求

http://mydomain.com/index.php/this/is/a/page

如果this/is/a/page消失,那么该选项肯定会被关闭,并且您无法在远程服务器上使用此方法(除非您可以更改其配置)。

在这种情况下,我会将规则更改为

RewriteRule ^(.*)$ index.php?path=$1 [L,QSA]

并更改框架以收听$_GET["path"]而不是$_SERVER["PATH_INFO"]

答案 1 :(得分:0)

您是否在Apache配置文件中启用了mod-rewrite。

sudo nano /etc/apache2/sites-available/default
sudo nano /etc/apache2/sites-enabled/000-default

这是一个向您展示几种方式的网站。我通过修改上述文件完成了我的mod重写,但我认为还有其他方法。

http://drupal.org/node/134439