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