我已经把一个网站转移到了我们的新VPS。 它在旧的服务器上工作得很好。 我想我知道是什么导致了这个问题,但不知道在哪里解决。
我已经阅读了很多关于漂亮url的post,似乎大部分都是使用mod_rewrite解决scheme。 看着我的.htaccess
文件,它不是这样设置的。 它可能甚至不是漂亮的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
当我去到网站时,我得到:
内部服务器错误
服务器遇到内部错误或configuration错误,无法完成您的请求。 请与网站pipe理员的服务器pipe理员联系,通知他们发生此错误的时间,以及您在此错误发生之前执行的操作。 有关此错误的更多信息可能在服务器错误日志中可用。 此外,尝试使用ErrorDocument处理请求时遇到500内部服务器错误错误。*
当我删除.htaccess
文件中的一切,然后网站出现,但是当我点击一个链接说它没有find。 (在代码中,它不使用.php
扩展名,所以它没有find页面。)
它在旧服务器上的工作方式是不使用.php
扩展名。 所以,而不是http://www.example.com/make01.php
它只是http://www.example.com/make01
。
所以我认为我必须添加一些configuration,才能使其在旧的VPS上运行。 我可以访问这两个VPS,并已经看过PHP.ini
文件,但不完全确定我在找什么。
如果你能把我指向正确的方向,那就太棒了。
如果您需要更多信息,请让我知道。 这是我第一次发帖。 顺便说说大社区!
Options -All SymLinksIfOwnerMatch MultiViews
删除-All
参数:
Options SymLinksIfOwnerMatch MultiViews
正如在Apache 2.4的Apache文档中提到的那样:
将选项与带+或 – 的选项混合使用是无效的语法,在服务器启动时会被中止语法检查而拒绝。
这似乎是在这里发生的事情。 -All
参数是不必要的,因为您只是显式设置SymLinksIfOwnerMatch
和MultiViews
。 在Apache 2.2(旧服务器,我假设)这只会导致“意外的结果”,没有错误。
所以我认为我必须添加一些configuration,才能使其在旧的VPS上运行。
看起来你正在利用MultiViews
,所以你应该很好走。 启用MultiViews
(mod_negotiation的一部分)后,对http://www.example.com/make01
的请求将导致服务器search与所请求的基本名称和所需的MIMEtypes相匹配的相应文件,并将其提供给客户端。 例如。 /make01
导致/make01.php
被提供。
请注意,如果您稍后决定使用mod_rewrite来执行此URL重写,那么您可能需要禁用MultiViews
因为它可能会发生冲突(常见的错误原因)。
它可能甚至不是漂亮的URL,完全叫做别的东西。
不pipe它是如何实现的,它仍然是一个“漂亮的URL”的forms。 这只是使URL更友好(或“漂亮”)的用户。