Больше проблем с Mod_rewrite - PullRequest
0 голосов
/ 11 марта 2009

Хорошо, есть клиент с существующими ссылками, поступающими с поискового маркетинга. Я нахожусь в процессе миграции программы с Cold Fusion на PHP.

RewriteEngine on
RewriteRule ^cat_ap~([^~]+)~(.*)\.htm$ /urban/cat_ap.php?$1=$2 [R]

В настоящее время у меня есть структура URL:

http://www.test.com/urban/cat_ap~nid~5964.htm

, которое вышеприведенное правило перезаписи меняет на

http://www.test.com/urban/cat_ap.php?nid=5964

Теперь я хочу иметь возможность получить переменные из строки запроса, но сохранить URL-адрес в браузере на исходном http://www.test.com/urban/cat_ap~nid~5964.htm, но при этом перейти на страницу PHP.

Так что, когда кто-то переходит на http://www.test.com/urban/cat_ap~nid~5964.htm, он фактически переходит на http://www.test.com/urban/cat_ap.php?nid=5964, но все равно показывает http://www.test.com/urban/cat_ap~nid~5964.htm.

Есть идеи, как это сделать?

Спасибо

Mike

Ответы [ 3 ]

0 голосов
/ 11 марта 2009

Флаг R явно вызывает внешнее перенаправление. Так что просто удалите флаг R.

0 голосов
/ 11 марта 2009

Я думаю, вам нужно настроить обратный прокси для достижения желаемого поведения и использовать флаг P с вашими правилами перезаписи. Я уже использовал сайт с такой конфигурацией, поэтому могу сказать, что он работает, но боюсь, я никогда не настраивал его сам: - (

Хорошим первым шагом будет установка mod_proxy и его загрузка и запуск. Страница поваренной книги mod_rewrite на флаге P содержит небольшое количество сведений о прокси RewriteRules и связана с документацией директивы ProxyPassReverse на apache.org.

0 голосов
/ 11 марта 2009

Вы уже делаете это в этой строке (но измените флаг R на L):

RewriteRule ^/urban/cat_ap~([^~]+)~(.*).htm$ /urban/cat_ap.php?$1=$2 [L]

URL-адрес, который пользователь нажимает, будет по-прежнему отображаться как версия .htm, а сервер обрабатывает ее как .php

.
...