url / php path_info проблема - PullRequest
       31

url / php path_info проблема

0 голосов
/ 02 ноября 2011

У меня возникла странная проблема. У меня есть несколько сайтов, разработанных на одной хостинговой платформе. Все сайты вроде бы в порядке, кроме одного из них. Веб-сайт настроен примерно на 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 ]

1 голос
/ 02 ноября 2011

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

0 голосов
/ 21 декабря 2011

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

...