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, поэтому я думаю, что большинство серверов будут иметь аналогичные настройки.

Другие вопросы по тегам