MOD_REWRITE在localhost中工作,但不在服务器中工作

时间:2013-02-01 04:03:02

标签: php apache mod-rewrite

首先,我向托管公司澄清了他们已经确认已启用“允许覆盖”设置。

如果我在.htaccess文件中写入垃圾值,那么我得到“内部服务器错误”,这进一步证明.htaccess没有被跳过。

我正在尝试这样做 输入:全部/ 3 输出:all.php?id = 3

我在.htaccess文件中写了以下内容,我是从教程网站复制的。

# Enable Rewriting  
RewriteEngine on  
# Rewrite user URLs  
#   Input:  user/NAME/  
#   Output: user.php?id=NAME  
RewriteRule ^all/(\w+)/?$ all.php?id=$1

all.php文件

<?php
echo $_GET['id'];
?>

现在,如果我输入localhost/all/3,我就会显示3。

如果我输入www.mydomain.com/all/3,则该页面为空白。

此外,我在.htaccess文件中只有上面的代码,没有更多或更少。那么为什么我在localhost和我的服务器中获得不同的行为?

2 个答案:

答案 0 :(得分:0)

试试这个:

RewriteRule ^all/(.*)$ all.php?id=$1

答案 1 :(得分:0)

听起来您的主机已启用MultiViews option。解决方案是让他们禁用它或可能更快的选项,只要基本名称(减去扩展名)与您的all.php模式不匹配,就将您的PHP文件重命名为RewriteRule以外的其他名称