linux - 在 Linux 上使用此 .htaccess 获取错误 500,在 Windows 上工作正常

标签 linux apache mod-rewrite lamp

我在 Windows 上使用 XAMPP,在 Linux (Ubuntu) 上使用 LAMPP 在本地使用 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 上一切都按预期工作。

有什么问题?

最佳答案

The last line is:
[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) 是 unicode byte order mark对于 UTF-8 和 apache 认为它是垃圾字符(至少在 linux 上)。在 Windows 中,此 BOM 用于让 Windows 知道该文件被编码为 UTF-8,而不是任何默认的 Windows 文本文件使用(我认为它是 UTF-16,小端)。你只需要去使用你最喜欢的 linux 文本编辑器,并删除那些字符。根据您使用的编辑器,它们甚至可能不会显示,因此您可能需要执行类似“从 RewriteEngine 到行首的单词末尾进行选择,然后删除选择,然后,从行的开头,只需手动键入 RewriteEngine

删除 BOM 后将 htaccess 文件移回 Windows 后,htaccess 文件有可能无法正常工作,我不太确定。

关于linux - 在 Linux 上使用此 .htaccess 获取错误 500,在 Windows 上工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12299684/

相关文章:

linux - 从运行中获取变量?

php - GKE/运行 php 应用程序/通过 nginx 或 apache 公开?

php - Nginx + php-fpm 是否比 Apache + mod-php 快得多

linux - 在一个 Web 应用程序下托管两个网站 - Azure 服务

Python/Tkinter 应用程序在 Raspberry Pi 启动上运行

c++ - 在不退出程序的情况下使用警报(3)——C++

php - 使用 lamp-server^ 包安装 LAMP 与单独安装 Apache、PHP、MySQL 的优缺点

facebook - 使用 htaccess 时 Facebook 评论插件的问题

apache - 如何使这项工作? RewriteCond %{ENV :UNIQUE_ID} ! %{QUERY_STRING}

php - htaccess 如何不重写某些 URL