Проблема Htaccess RewriteRule - Как перенаправить на «переписанный» URL на сервере? - PullRequest
0 голосов
/ 29 сентября 2010

У меня есть следующее правило перезаписи, которое работает нормально:

RewriteRule ^([a-zA-Z\-]+)[/]?$ apply/?survey_folder=$1

, которое превращает это: address.com/folder1/
в это: address.com/apply/?survey_folder=folder1

Проблема в том, что яНе могу найти способ использовать перенаправление на переписанный URL.Используя cfml в качестве примера, (cflocation url = "http://www.address.com/folder1/") выдает ошибку, потому что, конечно же, папка" folder1 "фактически не существует на сервере.

Я могу перенаправить пользователя наисправьте страницу, используя / apply /? survey_folder = folder1, но это вообще лишает цели иметь правило перезаписи.

Есть ли способ перенаправить на URL, переписанный htaccess?.

Ответы [ 2 ]

1 голос
/ 15 апреля 2011

Добавьте флаг [L] к правилу, иначе вы рискуете получить бесконечные циклы и другие проблемы.

Перенаправление, которое вам нужно, невероятно просто.

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /apply/(index\.php)?\?survey_folder=([\ ]+)\ HTTP/
RewriteRule ^apply/(index\.php)? http://www.example.com/%1 [R=301,L]

RewriteRule ^([A-Z-]+)$ /apply/?survey_folder=$1 [NC,L]

Не допускайте, чтобы оба URL-адреса с конечной косой чертой и URL-адреса без конечной косой черты разрешали одно и то же содержимое. URL для страницы не имеет косой черты. В этом случае добавьте еще один предыдущий редирект на косые черты в полоску.

0 голосов
/ 29 сентября 2010

Вы пробовали установить RewriteBase?Его назначение - сопоставить URL-адрес с физическим местоположением на сервере.Я не совсем уверен, что это проблема, которую вы имеете, но это звучит как возможность.

http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritebase

...