我在Windows上使用XAMPP,在Linux上使用LAMPP (Ubuntu)在本地使用PHP进行开发。我的.htaccess文件中有以下内容:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php如您所见,我不想键入以HTML或PHP结尾的文件名的扩展名。我的两个.htaccess都包含相同的上述内容。
令人惊讶的是,当我在Ubuntu上请求任何文件(或目录)时(即使是完整扩展名),我得到的都是Error 500。如果我删除这个.htaccess,一切都会好起来的。
在Windows上,一切工作正常。
有什么问题吗?
发布于 2012-09-07 07:25:49
最后一行是:
[Thu Sep 06 20:14:25 2012] [alert] [client 127.0.0.1] /opt/lampp/htdocs/.htaccess: Invalid command '\xef\xbb\xbfRewriteEngine', perhaps misspelled or defined by a module not included in the server configuration
这些字符(\xef\xbb\xbf)是UTF-8的unicode byte order mark,apache认为它是垃圾字符(至少在linux上)。在windows中,此BOM用于让Windows知道文件是以UTF-8格式编码的,而不是默认的windows文本文件使用的格式(我认为它是UTF-16,小端)。您只需要使用您最喜欢的linux文本编辑器,并删除这些字符。根据您使用的编辑器,它们可能甚至不会出现,因此您可能需要执行类似“从单词RewriteEngine的末尾选择到行首,然后删除选定内容,然后从行首手动键入RewriteEngine”这样的操作。
在删除BOM之后,一旦将htaccess文件移回Windows,可能会出现无法正常工作的情况,我不是很确定。
发布于 2021-07-30 18:45:19
我还在记事本中打开了.htaccess,得到了错误500。
我不知道我的解决方案是否适用于您,但我只是从.htaccess复制了所有内容,然后删除了旧的.htaccess,创建了一个新的,并将数据粘贴回来,它起作用了。
https://stackoverflow.com/questions/12299684
复制相似问题