url/php path_info проблема
У меня есть то, что я считаю странной проблемой. У меня есть несколько сайтов, разработанных на одной хостинговой платформе. Весь сайт вроде бы в порядке, кроме одного из них. Веб-сайт настроен примерно на 1 страницу (index.php), которая извлекает правильные данные для отображения из базы данных на основе path_info - это работало в течение многих лет - теперь на одном сайте это перестало работать. Под прекращением работы я имею в виду, что страница ниже теперь переходит в ошибку 404 - у меня сложилось впечатление, что она должна видеть index.php в качестве сценария для использования.
Я считаю, что это проблема с htconfig или другим файлом, к которому у меня нет доступа к неправильной настройке на стороне хоста. Возможно, кто-то может пролить свет на то, куда я мог бы направить их. Мой собственный файл htaccess совершенно пуст:
wwww.testsite.com/index.php/page1
Вышеуказанное использовалось для перехода к index.php, а затем с помощью $_SERVER path_info извлекает страницу 1, получает содержимое, связанное со страницей 1, из базы данных и отображает его на странице. Может кто-нибудь подтвердить, что я не схожу с ума - что выше, пожалуйста, перейдите на index.php и, возможно, также объясните, почему URL-адрес теперь считается несуществующим, так как он, похоже, не идет в index.php, а в page1. Спасибо заранее за любые советы.
2 ответа
Может кто-нибудь подтвердить, что я не схожу с ума - что вышеупомянутое [wwww.testsite.com/index.php/page1] должно идти в index.php, пожалуйста?
Нету. Это должно искать файл с именем page1
в каталоге index.php
в корне документа для www.testsite.com
,
Я думаю, что у вас был файл.htaccess, который выглядел примерно так:
RewriteEngine on
RewriteRule ^index.php(.*)$ index.php
Другая возможность состоит в том, что MultiViews были ранее включены, а теперь уже нет. С MultiViews вы также получаете поведение, которое вы описали. Если это разрешено хостером, вы можете включить его, просто создав файл.htaccess, содержащий:
Options MultiViews
Если вы поместили файл.htaccess с одним из вышеупомянутых решений в корневой каталог документа, вы можете проверить это.
В Apache, если у вас есть AcceptPathInfo on
где угодно в конфиге Apache (в том числе в .htaccess
, если конфиг сервера это позволяет) и есть файл /index.php
, затем /index.php/stuff
действительно должен идти /index.php
и должен установить $_SERVER['PATH_INFO']
в "/stuff"
, Обработчик сценария CGI и mod_php* даже делают это по умолчанию, поэтому он должен просто работать, если он явно не отключен.
В любом случае, если он в данный момент выключен, вы можете включить его снова, добавив AcceptPathInfo on
в ваш файл.htaccess, если AllowOverride FileInfo
настроен для сайта.
Я не даю никаких обещаний по поводу других веб-серверов, но PATH_INFO
является частью спецификации CGI, поэтому я думаю, что большинство серверов будут иметь аналогичные настройки.