mod_rewrite показывает изменение URL, хотя я не могу понять, почему - PullRequest
1 голос
/ 26 марта 2011

Я пытаюсь просто передать domain.net/abc в приложение Rails как / s2? Alt_url = abc, и я не хочу, чтобы отображаемый URL-адрес в браузере изменился. Я ходил кругами с этим в течение долгого времени. Я могу заставить переписать работать (приложение работает нормально), но URL всегда поменяется местами в браузере.

RewriteEngine On
RewriteRule ^/([a-zA-Z0-9_-]+)$ /s2?alt_url=domain.net\%2F$1 [PT]

Если я не использую [PT], то мое окончательное правило не может быть правильно передано в приложение Rails. Я использую Passenger и, согласно обсуждению на http://code.google.com/p/phusion-passenger/issues/detail?id=230, я должен использовать [PT] и следить за тем, чтобы больше ничего не делать сумасшедшим. Поэтому я не уверен, почему опция pass through вызывает внешнее перенаправление, но, похоже, это необходимо для работы.

Кто-нибудь знает, как я могу избежать изменения URL-адреса без изменения приложения Rails?

Любая помощь будет высоко ценится. Фил

Ответы [ 2 ]

0 голосов
/ 26 марта 2011

Не знаком с рельсами, но этот пример должен вам помочь.это правило перезаписи принимает все (алфавитно-цифровое, _ и -) после / т.е.site.com/value

RewriteRule ^([a-zA-Z0-9_-]+)$ /file.php?variable=$1

Где ^ ([a-zA-Z0-9 _-] +) $ - это регулярное выражение, которое я использовал, чтобы взять что-нибудь после URL-адреса и положить его в $ 1

Это оставит ваш URL как site.com/value

edit: пример того, как я использую это: grwl.it / kirbdee , он оставляет URL как есть, но в основномвызывает php, передаваемый в kirbdee как переменную.

0 голосов
/ 26 марта 2011

Вы, очевидно, получаете внешнее перенаправление (HTTP 302 или подобное), и вы принудительно делаете это с помощью [R]. Я думаю, что вы должны просто удалить [R].

Подробнее о флаге R .

Обновление ẀКогда я думаю об этом, изменение доменных имен (в данном случае http://domain.net/home) всегда будет внешним перенаправлением.

Я предлагаю иметь отдельные правила для изменения доменного имени и для обработки различных путей в конечном доменном имени.

...