将.htaccess与RewriteEngine一起使用时出现500内部服务器错误

时间:2011-03-21 02:46:32

标签: .htaccess mod-rewrite

我在共享主机Bounceweb上,我正在尝试添加一些重写规则,以使我的链接看起来更漂亮。

其中一条规则是将网址:http://mysite.com/upload指向:http://mysite.com/upload.php。我在.htaccess文件中有这个:

RewriteEngine on
RewriteRule ^upload$ upload.php

但它给我的全部是500内部服务器错误。我查看了我的日志,这出现了很多:

[alert] [client 81.179.29.185] /home/minecraf/public_html/.htaccess: Invalid command '\xef\xbb\xbfRewriteEngine', perhaps misspelled or defined by a module not included in the server configuration

这是否意味着我的主机不支持.htaccess?如果不这样做,那就太蹩脚了。我已经尝试将.htaccess的权限更改为777,但它没有帮助。

谢谢!

7 个答案:

答案 0 :(得分:45)

\xef\xbb\xbf是三个不可见的垃圾字符(至少从Apache的角度来看),称为Unicode BOM或字节顺序标记。 Apache认为这些字符是紧随其后的命令的一部分。这是你在日志中看到的,虽然字符被转义所以它们肉眼可见。 \xef\xbb\xbfRewriteEngine

在您的编辑器中,特别是如果您的编辑器是记事本,请确保您在没有BOM的情况下保存文件。这应该可以在另存为对话框或其他地方选择。

答案 1 :(得分:20)

在某些情况下,可能未加载apache中的mod_rewrite模块。检查您的apache配置。

更新:

Windows xampp :打开xampp/apache/conf/httpd.conf并取消注释mod_rewrite模块。
Windows wamp :打开wamp/bin/apache/Apache2.x.x/conf/httpd.conf并取消注释mod_rewrite模块 Ubuntu :输入终端:a2enmod rewrite
Ubuntu手册cp /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled/rewrite.load
然后重新加载apache
Ubuntu: service apache2 reloadservice apache2 restart
Windows:来自xampp或wamp控制面板。

答案 2 :(得分:10)

试试这个:

a2enmod rewrite    
/etc/init.d/apache2 restart

答案 3 :(得分:5)

要在unix中删除BOM,请使用vi及以下命令

:设置nobomb

:wq

答案 4 :(得分:2)

我遇到了这个问题并用以下方法解决了这个问题:

sudo a2enmod rewrite
sudo service apache2 restart

答案 5 :(得分:0)

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

rewriterule ^upload$ upload.php

</IfModule>

试试这个。

答案 6 :(得分:0)

只需使用UTF-8编码(不带BOM)保存.htaccess文件并上传。 建议使用Notepad ++。 (对我来说有帮助)。

atb