PATH_INFO перестает работать после внутреннего перенаправления? - PullRequest
1 голос
/ 09 марта 2012

Я занимался этим 45 минут без удачи. Я нашел похожие вопросы, но ни один из них полностью не касался моей ситуации / проблемы.

Я пытаюсь выполнить перезапись, которая выполняет 2 действия: 1) делает чистые URL-адреса (удаляет index.php) 2) скрывает каталог (мое приложение находится в web_root / dir, но я хочу, чтобы оно появилось на domain.com/ ) 3) оставляет $ _SERVER ('PATH_INFO') без изменений

Так, например. Я хочу:

www.mydomain.com/some/path

внутренне переписать на:

www.mydomain.com/dir/index.php/some/path

Это то, что я имею до сих пор:

RewriteBase   /dir/
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/dir.*$
# if I change the [L] to an [R], it all works
# but it obviously "dirties" my desired clean URL
RewriteRule ^(.*)$ /dir/index.php/$1 [L]

# not sure why I need this
RewriteRule ^/?$ /dir/

Мне следует: в моем учреждении есть прокси, но я не думаю, что это вызывает проблему.

Использование PHP 5.3 и FastCGI

В чем секрет того, чтобы PATH_INFO работал с внутренним перенаправлением?

1 Ответ

0 голосов
/ 09 марта 2012

Ммм! Трейлинг путь вещи.

Значит, эта информация о пути теряется при перезаписи?

Вы пытались выполнить перезапись www.mydomain.com/some/path -> www.mydomain.com/dir/index.php/some/path не в контексте каждого каталога, а раньше при обработке URL-адреса сервера, как VirtualHost?

Я думаю, что выполнение этого по URL не может потерять информацию о пути, потому что в то время неизвестно, какая часть является физическим путем, а какая - т. Не используется, URL-адрес сопоставлен с файлом. Если вы производите

Черт, как насчет простого Alias? Псевдонимы часто используются для сопоставления абстрактных расположений URL-адресов с конкретными местами в файловой системе для приложений. У меня их целая куча; вот один:

Alias /cgit/txr /cgit/cgit.cgi/txr

Когда люди получают доступ к www.kylheku.com/cgit/txr, он перенаправляется изнутри на www.kylheku.com/cgit/cgit.cgi/txr. Этот URL тоже будет работать, но первый лучше, потому что в нем нет трех повторений строки cgi.

Само собой разумеется, псевдоним не теряет никаких конечных элементов из URL.

...