Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Администрирование Web серверов и Web служб > mod_rewrite, помогите убить слэш


Автор: abibok 3.12.2010, 06:06
Здравствуйте.

Имеется сайт, на котором ссылки
site.ru/game.php?id=43
site.ru/game-43
показывают одно и то же.

Реализовано это было так:
RewriteRule ^game-([0-9]+)$ game.php?id=$1 [L]

Было решено 
site.ru/game-43
изменить на
site.ru/game/43
и
site.ru/game/43/
, и чтобы ссылка site.ru/game-43 редиректила на site.ru/game/43

Было сделано так:

RewriteRule ^game/([0-9]+)([/]?)$ game.php?id=$1 [L]
RedirectMatch 301 ^/game-(.*)$ http://site.ru/game/$1

На домашней машине все работало как надо.

А вот на сервере
http://site.ru/game/11/    все ок
http://site.ru/game/11    адрес преобразовывается в http://site.ru/game/11/?id=11 но страница отображается корректно
http://site.ru/game-11    адрес преобразовывалтся в http://site.ru/game/11/?id=11 но страница отображается корректно

?id=11 - не нужен.

Переписал так:

RewriteRule ^game/([0-9]+)/$ game.php?id=$1 [L]
RedirectMatch 301 ^/game-(.*)$ http://site.ru/game/$1

Теперь

http://site.ru/game/11/ все ок
http://site.ru/game/11    адрес преобразовывается в http://site.ru/game/11/
http://site.ru/game-11    адрес преобразовывается в http://site.ru/game/11/

Подскажите, как сделать чтобы в случае http://site.ru/game/11 в конце не добавлялся слэш.

p.s. возможно это имеет значение, на сервере есть каталоги типа /game/11/.


Автор: Icaros 9.12.2010, 17:32
Добрый день.

Есть подозрение, что для url`а http://site.ru/game/11 правило ^game/([0-9]+)/$ не сработает, т.к. не хватает указанного обязательным символа "/" в конце запроса. В таком случае сервер находит каталог /game/11/ и выполняет redirect в корень этого самого каталога.  Но это если я не сильно сегодня обкурился и ничего не напутал... 

Попробуйте указать правило ^game/([0-9]+)$ или ^game/([0-9]+)/?$

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)