Назад | Перейти на главную страницу

Мод Rewrite для cgi-bin

Итак, я хочу переписать следующую структуру URL-адресов

    mysite.com/cgi-bin/shop/shop.cgi/ 

к

    mysite.com/+

У меня это, как правило, работает, но это не заставляет URL-адрес печататься в браузере, когда вы все еще указываете на старый URL-адрес. Так что у меня дублированный контент. Я пробовал добавить к нему [R = 302], но это не работает. [R = 302] заставляет распечатать исходную старую структуру URL (/cgi-bin/shop/shop.cgi/%). Любые идеи?

    RewriteRule ^\+([^*]+)/?$ /cgi-bin/shop/shop.cgi/$1

Любая помощь будет принята с благодарностью!

Вы изменили правило перезаписи.

RewriteRule ^\+([^*]+)/?$ /cgi-bin/shop/shop.cgi/$1

означает, что когда клиент переходит на страницу mysite.com/+, ваш сервер будет действовать так, как если бы они написали mysite.com/cgi-bin/shop/shop.cgi/ вместо.

Если вы хотите, чтобы переписывание работало в противоположном направлении, вам нужно поменять местами выражение и цель, например:

RewriteRule /cgi-bin/shop/shop.cgi/(.*) /\+$1 [L,R]

Это означает, что если клиент перейдет к mysite.com/cgi-bin/shop/shop.cgi/FOO, они получат перенаправление на mysite.com/+FOO

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