首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在Linux上使用这个.htaccess获取错误500,在Windows上运行良好。

在Linux上使用这个.htaccess获取错误500,在Windows上运行良好。
EN

Stack Overflow用户
提问于 2012-09-06 20:03:26
回答 2查看 3K关注 0票数 1

我在Windows上使用XAMPP,在Linux上使用LAMPP (Ubuntu)在本地使用PHP进行开发。我的.htaccess文件中有以下内容:

代码语言:javascript
运行
复制
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上,一切工作正常。

有什么问题吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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,可能会出现无法正常工作的情况,我不是很确定。

票数 2
EN

Stack Overflow用户

发布于 2021-07-30 18:45:19

我还在记事本中打开了.htaccess,得到了错误500。

我不知道我的解决方案是否适用于您,但我只是从.htaccess复制了所有内容,然后删除了旧的.htaccess,创建了一个新的,并将数据粘贴回来,它起作用了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12299684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档