我已将一个网站转移到我们的新 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
将带有 + 或 - 的选项与不带有 + 或 - 的选项混合在一起不是有效语法,并且会在服务器启动时通过语法检查被拒绝并中止。
这似乎就是这里发生的情况。由于您明确设置的只是和-All
,因此不需要该参数。在 Apache 2.2(我假设是旧服务器)上,这只会导致“意外结果”并且不会出现错误。SymLinksIfOwnerMatch
MultiViews
因此我认为我必须在配置中添加一些内容以使其以与在旧 VPS 上相同的方式工作。
看起来您正在利用MultiViews
,所以您应该可以开始了。MultiViews
启用(mod_negotiation 的一部分)后, 的请求http://www.example.com/make01
将导致服务器搜索查找与请求匹配的适当文件基名并要求 mime 类型并将其提供给客户端。例如,得到服务的/make01
结果/make01.php
。
请注意,如果您后来决定使用 mod_rewrite 来执行此 URL 重写,那么您可能需要禁用它,MultiViews
因为它可能会发生冲突(常见的错误原因)。
它甚至可能根本不是漂亮的 URL,而是完全不同的名字。
不管它是如何实现的,它仍然是一种“漂亮 URL”。它只是让 URL 对用户更友好(或“漂亮”)。