我在共享主机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,但它没有帮助。
谢谢!
答案 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 reload
或service 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