Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Как оставить старый адрес после редиректа?
цитата
16/04/08 в 18:46
 Klirik
На сайте лежит .htacces с кодом
RewriteEngine On
...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ link.php?=$1

т.е. не существующие адреса передаются скрипту link.php и он уже сам редиректит header-ом.
Вопрос: можно сделать так, чтобы после редиректа из скрипта в адресной строке браузера оставался тот самый не существующий адрес, который обрабатывается htaccess-om?
цитата
16/04/08 в 19:30
 Corex
Если изменить поведение скрипта link.php, чтобы он не редиректил, а выводил контент (напрямую или, может, через ajax), то в адресной строке, соответственно, будет оставаться запрошенный УРЛ.

Менее предпочтительно - использовать фреймы и делать редирект внутри основного фрейма.

А так в чистом виде не получится, насколько я знаю, т.к. браузер получает от сервера новый УРЛ, переходит по нему и уже сам меняет данные в адресной строке.
цитата
16/04/08 в 20:57
 Klirik
Вариант с фреймами, как запасной, я уже реализовал, но использовать не хотелось бы из-за проблем с индексацией.
цитата
16/04/08 в 21:20
 wMaster
это проще реализуется через связку nginx + apache

http://blog.kovyrin.net/2006/11/01/nginx-x-accel-redirect-php-rails/lang/ru/
цитата
16/04/08 в 21:54
 ivango
че то вы гоните...

RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^(.*)$ link.php?=$1 [T=application/x-httpd-php]

вот так должно работать,
но в link.php желательно не редиректить всё же, а инклюдить.
цитата
16/04/08 в 22:23
 Klirik
Ivango, респект - заработало! )
И правда, только с инклюдом, но если в заинклюженых страницах стили и рисунки с неполными адресами, то они просто не показываются (
Похоже не судьба мне сделать )
цитата
17/04/08 в 04:32
 idk2045
Еще вариант должен работать, но тока если в апаче включен mod_proxy:
RewriteEngine On
...
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ link.php?=$1 [P]
цитата
17/04/08 в 07:08
 Corex
ivango писал:
че то вы гоните...

RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^(.*)$ link.php?=$1 [T=application/x-httpd-php]

вот так должно работать,
но в link.php желательно не редиректить всё же, а инклюдить.

По сути ты написал то же самое. T=application/x-httpd-php всего лишь ставит хендлер запроса, который по-дефолту для link.php и так должен быть x-httpd-php.
А инклюд - это как раз изменение поведения link.php, когда он сам выводит контент, а не редиректит клиента. Так что это об одном и том же, только разными словами. icon_wink.gif

Klirik:
Вместо инклюда можно сделать контент-проксирование, например, на основе _xttp://sourceforge.net/projects/poxy/, но при большом кол-ве запросов может притормаживать.
цитата
17/04/08 в 16:26
 Klirik
Спасибо, всех оценил.


Эта страница в полной версии