Я перевел сайт на наш новый VPS. На старом сервере все работало нормально. Я думаю, что знаю причину проблемы, но не знаю, где ее исправить.
Я прочитал много сообщений о красивых 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 Internal Server Error. *
Когда я удаляю все в .htaccess
файл появляется веб-сайт, но когда я нажимаю на ссылку, он говорит, что не найден. (В коде не используется .php
расширение, чтобы он не нашел страницу.)
На старом сервере это работает .php
расширение не используется. Так что вместо http://www.example.com/make01.php
просто http://www.example.com/make01
.
Поэтому я думаю, что мне нужно кое-что добавить в конфигурацию, чтобы она работала так же, как на старом VPS. У меня есть доступ к обоим VPS, и я просмотрел PHP.ini
файлы, но не совсем уверен, что ищу.
Если бы вы могли указать мне правильное направление, это было бы здорово.
Пожалуйста, дайте мне знать, если вам понадобится дополнительная информация. Это мой первый пост. Между прочим, отличное сообщество!
Options -All SymLinksIfOwnerMatch MultiViews
Удалить -All
параметр:
Options SymLinksIfOwnerMatch MultiViews
Как отмечено в Документы Apache для Apache 2.4:
Смешивание параметров с + или - с вариантами без них является недопустимым синтаксисом и будет отклонено во время запуска сервера проверкой синтаксиса с прерыванием.
Казалось бы, именно это и происходит здесь. В -All
параметр не требуется, поскольку вы явно устанавливаете только SymLinksIfOwnerMatch
и MultiViews
. На Apache 2.2 (я полагаю, старый сервер) это просто привело бы к «неожиданным результатам» и без ошибок.
Поэтому я думаю, что мне нужно кое-что добавить в конфигурацию, чтобы она работала так же, как на старом VPS.
Похоже, вы пользуетесь MultiViews
, так что вам должно быть хорошо. С участием MultiViews
включен (часть mod_negotiation), запрос на http://www.example.com/make01
приведет к серверу поиск для соответствующего файла, который соответствует запрошенному базовое имя и требуется MIME-тип и подавать его клиенту. например. /make01
приводит к /make01.php
обслуживается.
Обратите внимание, что если вы позже решили использовать mod_rewrite для перезаписи этого URL-адреса, вам, вероятно, придется отключить MultiViews
поскольку это может вызвать конфликт (частая причина ошибки).
Это может быть даже не Pretty URL, а что-то совсем другое.
Независимо от того, как это реализовано, это все еще форма «красивых URL-адресов». Это просто делает URL-адреса более удобными (или «красивыми») для пользователя.