| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Администрирование 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]+)/?$ |