Допилить rewrite

4ksner
На сайте с 26.02.2010
Offline
34
379

Всем привет!

Используется на сайте вот такой редирект избавления от слеша на конце:

RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]

Сейчас поставил на сайт форум по адресу sitename.ru/forum/

У форума какая то особенность, и он не дает создавать темы и отвечать с редиректом написанном выше. Поэтому в этот код нужно добавить исключение на присутствие в начале УРЛ слова "forum".

Пытался сам, ни чего не вышло. Прошу помощи у гуру.

Не в деньгах счастье - человек, имеющий десять миллионов долларов, может быть ничуть не счастливее человека, имеющего девять.
IL
На сайте с 20.04.2007
Offline
435
#1

Чуть выше разместить:

RewriteRule ^forum - [L]
... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
4ksner
На сайте с 26.02.2010
Offline
34
#2

Технически вроде работает - слеш на форуме при переходе появляется.

Но теперь выдает 404 ошибку

The requested URL /forum/ was not found on this server.

Причем все страницы форума это выдают.

IL
На сайте с 20.04.2007
Offline
435
#3

Эм.. а на форуме ЧПУ? Тогда строчку выше убрать, а проверить такое:


RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/forum
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]
4ksner
На сайте с 26.02.2010
Offline
34
#4

Большое спасибо за помощь!

Ваш код не заработал. Вместо этого, в УРЛ начал всплывать index.php и получалось вот что http://www.sitename.ru/index.php/forum.

Этот index.php присутствовал по умолчанию, и я забыл указать как от него избавляюсь:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]

Методом тыка я изменил вашу строчку на эту:

RewriteCond %{REQUEST_URI} !/forum

И все заработало!

Это корректный код? Проблемы потом не всплывут?

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий