我有一个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参数结果总是空白,所以我的自定义框架无法正确处理请求。
可能是什么问题?
抱歉我的英语不好,我希望我已经足够清楚......
答案 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重写,但我认为还有其他方法。