Мод 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

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

Другие вопросы по тегам