漂亮的 URL 服务器端配置?

漂亮的 URL 服务器端配置?

我已将一个网站转移到我们的新 VPS。它在旧服务器上运行良好。我想我知道是什么导致了这个问题,但不知道在哪里修复它。

我读过很多关于 Pretty URL 的帖子,似乎大多数帖子都使用了 mod_rewrite 解决方案。查看我的.htaccess文件,它不是这样设置的。它可能根本不是 Pretty URL,而是完全不同的名字。

我们的 VPS 正在运行 WHM/Cpanel

服务器版本:

Apache/2.4.25(cPanel)OpenSSL/1.0.1e-fips mod_bwlimited/1.4

Apache 2.4、PHP 5.5、PHP 5.6 和 PHP 7.0

CENTOS 7.3 x86_64 virtuozzo – 服务器 WHM 62.0(版本 16)

我遇到了与 URL 和 相关的问题.htaccess

以下是当前文件的内容.htaccess

Options -All SymLinksIfOwnerMatch MultiViews
#AllowOverride None
Order allow,deny
Allow from all
DirectoryIndex index

当我访问该网站时,我得到:

内部服务器错误
服务器遇到内部错误或配置错误,无法完成您的请求。请联系服务器管理员,告知他们此错误发生的时间以及您在发生此错误之前执行的操作。有关此错误的更多信息可能包含在服务器错误日志中。此外,在尝试使用 ErrorDocument 处理请求时遇到 500 内部服务器错误错误。*

当我删除.htaccess文件中的所有内容后,网站就会出现,但当我点击链接时,它说找不到链接。(在代码中它不使用扩展,.php因此找不到页面。)

它在旧服务器上的工作方式是.php不使用扩展。因此,http://www.example.com/make01.php它只是http://www.example.com/make01

因此我认为我必须在配置中添加一些内容,使其工作方式与在旧 VPS 上的工作方式相同。我可以访问这两个 VPS,并查看了文件,PHP.ini但并不完全确定我在寻找什么。

如果您能给我指明正确的方向,那就太好了。

如果您需要更多信息,请告诉我。这是我第一次发帖。顺便说一句,很棒的社区!

答案1

Options -All SymLinksIfOwnerMatch MultiViews

删除-All参数:

Options SymLinksIfOwnerMatch MultiViews

正如Apache 2.4 的 Apache 文档

将带有 + 或 - 的选项与不带有 + 或 - 的选项混合在一起不是有效语法,并且会在服务器启动时通过语法检查被拒绝并中止。

这似乎就是这里发生的情况。由于您明确设置的只是和-All,因此不需要该参数。在 Apache 2.2(我假设是旧服务器)上,这只会导致“意外结果”并且不会出现错误。SymLinksIfOwnerMatchMultiViews

因此我认为我必须在配置中添加一些内容以使其以与在旧 VPS 上相同的方式工作。

看起来您正在利用MultiViews,所以您应该可以开始了。MultiViews启用(mod_negotiation 的一部分)后, 的请求http://www.example.com/make01将导致服务器搜索查找与请求匹配的适当文件基名并要求 mime 类型并将其提供给客户端。例如,得到服务的/make01结果/make01.php

请注意,如果您后来决定使用 mod_rewrite 来执行此 URL 重写,那么您可能需要禁用它,MultiViews因为它可能会发生冲突(常见的错误原因)。

它甚至可能根本不是漂亮的 URL,而是完全不同的名字。

不管它是如何实现的,它仍然是一种“漂亮 URL”。它只是让 URL 对用户更友好(或“漂亮”)。

相关内容