php $SERVER['PATH_INFO'] и apache mod_rewrite

Здесь у меня есть файл.htaccess с:

Options +FollowSymLinks

RewriteEngine on

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule .* index.php [QSA,L]

И перезапись работает, но в моем index.php нет path_info, когда я пытаюсь http://site.com/example.

Я выделил эту тему красным цветом https://stackru.com/questions/1442854/codeigniter-problem-with-mod-rewrite-on-apache-1-3 но это не решило мою проблему.

Итак, эта проблема возникает только на Apache 1.3 (на 2.0 все в порядке), и я хочу знать, почему. У меня тоже к сожалению нет доступа к httpd.conf (

Пожалуйста, помогите мне.

3 ответа

Попробуйте изменить правило перезаписи на:

RewriteRule (.*) index.php [QSA,L,E=PATH_INFO:/$1]

Это связано с mod_negotiation и возможность доступа /index.php как /index (без расширения).

Решение:

a2dismod negotiation

service apache2 restart

PATH_INFO является суффиксом виртуального пути после имени реального исполняемого файла CGI / PHP-скрипта
Вам нужно пройти один, чтобы увидеть это:

RewriteRule (.*) index.php/$1 [QSA,L]

Обратите внимание, что вам также может потребоваться сначала включить этот параметр: http://httpd.apache.org/docs/2.2/mod/core.html

AcceptPathInfo On

И затем, в зависимости от PHP SAPI, вам, возможно, придется настроить php.ini относительно --cgi-force-redirect настройка (которая предназначена для отказа от эксплойтов PATH_INFO для некоторых установок). http://php.net/manual/en/security.cgi-bin.php

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