复制后,htaccess 在 Mac 上不起作用,但在 NTFS 分区上起作用

复制后,htaccess 在 Mac 上不起作用,但在 NTFS 分区上起作用

我在 Mac OS X(XAMPP)上运行 Apache,该网站使用 .htaccess 来获得类似“domain.com/site/section/etc”的 URL。

问题是 URL 方案不起作用。看来 .htaccess 文件未被 Apache 识别。

但是,如果我指向虚拟主机我的 Mac 上的 Apache在我拥有的 NTFS 分区上的网站版本(在 Windows 上可以正常工作)上,它在 Mac 上也能完美运行。Mac 分区上的网站与 NTFS 分区上的网站完全相同(相同的 .htaccess、相同的 DB,所有内容)。

.htaccess 文件没有路径(没有对目录的引用)。以下内容对于 Mac 和 NTFS 版本的文件都相同:

ls -l .htaccess
-rwxrwxrwx 1 root 管理员 944 十月 8 16:02 .htaccess
文件 .htaccess
.htaccess:ASCII 英文文本,带有 CRLF 行终止符

我不明白发生了什么,但似乎将文件从 NTFS 复制到 Mac 分区,使其变得毫无用处?

答案1

如果 .htaccess 文件从 NTFS 卷获得一些愚蠢的权限,从而导致 apache 崩溃,我一点也不惊讶。尝试创建一个新的空白文件.htaccess,并将文件的内容复制到新文件中;然后看看效果如何。

答案2

可能是几件事。

  • Apache 是否配置为读取 .htaccess 文件?(是的,所以这不是问题)

  • 尝试运行“dos2unix .htaccess”来转换可能会使 Apache 感到困惑的 CRLF 行结尾。(再次出错;假设两个 .htaccess 相同,没有理由只影响一个分区上的服务器而不影响另一个分区上的服务器)

  • 我唯一能想到的另一件事是复制破坏了新文件的所有权或权限。如果 Apache 没有读取文件的权限,它将不会生效。

答案3

在终端中,以下命令会给您什么?

ls -l .htaccess
文件 .htaccess

NTFS 版本也是一样吗?

您确定该文件中没有路径(目录的引用)吗?

(抱歉,您确定您确实复制了该文件吗?这是 Unix 上的隐藏文件?在终端中,使用类似 的命令cp -a old-dir new-dir,使用-a来保留文件日期和权限,然后没有也可以/*复制隐藏文件。

.htaccess如果您确定Mac 上的文件中存在错误(只是一些拼写错误就够了),该怎么办?那么,当您访问某个页面时,是否会收到 500 内部服务器错误?(只是为了确定.htaccess当虚拟主机配置为查看 Mac 的分区时,Apache 是否完全忽略了它,或者只是忽略了其部分内容……)

并且这两个站点是否都位于 Apache 根目录的相同相对位置?(就像两者都位于.../http_docs/同一~/Sites/位置,但不在~/Sites/some/path您的 Mac 上,而 Mac 上可能.htaccess在某个较低级别有其他文件)?

答案4

抱歉!我已将 apache 配置为允许 .htaccess 覆盖。:(

相关内容