Итак, я хочу переписать следующую структуру 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
Обратите внимание, что использовать и текущее правило, и это одновременно - не лучшая идея, поскольку вы рискуете вызвать бесконечный цикл, по крайней мере, если вы используете перенаправление, поскольку перенаправление вызовет новый запрос, который будет снова будет проанализирован правилами перенаправления.