Перейти к содержимому


Проблема с редиректом


  • Вы не можете ответить в тему
Сообщений в теме: 3

#1 Serghant

    Пользователь

  • Assistent vsupport.club
  • PipPip
  • 14 сообщений
Репутация: 0
Начинающий

Отправлено 26 January 2013 - 10:13 AM

Всем доброго дня! Подскажите как решить проблему, на сайте нужен редирект со всех путей заканчивающихся на / на пут без слеша, пример site.ru/tema/ - site.ru/tema.
Однако не должно быть редиректов из папки и подпапок папки admin.
Вот что написал я


RewriteRule ^admin$ /admin/login [L,R=301]RewriteRule ^(!admin)/$ /$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /rewrite.php?p_=$1 [L,QSA]

Т.е. интересует эта строка RewriteRule ^(!admin)/$ /$1 [R=301,L], как правильно указать условие, что редирект всегда кроме admin?
Заранее спасибо.
  • 0

#2 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 26 January 2013 - 06:15 PM

Я не очень хорошо разбираюсь в синтаксисе .htaccess, поэтому первым делом попробовал бы раньше по тексту поставить строку, где RewriteRule будет реврайтить admin сам-в-себя, т.е. без изменений. И указать, что дальше идти не надо, это конечное условие. Вроде, это [L] и есть, без R=301. Тогда для admin выполнится более ранняя строка, не вносящая изменений, а для остального применятся следующие по тексту правила.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#3 R.Sergey

    Администратор

  • Администраторы
  • 2810 сообщений
Репутация: 332
Мастер

Отправлено 26 January 2013 - 06:42 PM

Т.е. интересует эта строка RewriteRule ^(!admin)/$ /$1 [R=301,L], как правильно указать условие, что редирект всегда кроме admin?


Я бы сделал так



RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !=/admin/
RewriteCond %{REQUEST_URI} !=/login/
RewriteRule ^(.*)$ /rewrite.php?p_=$1 [L,QSA]

  • 0

#4 Serghant

    Пользователь

  • Assistent vsupport.club
  • PipPip
  • 14 сообщений
Репутация: 0
Начинающий

Отправлено 27 January 2013 - 05:42 PM

спасибо за варианты!
сделал так
RewriteCond %{REQUEST_URI} !^.*admin.*$
RewriteRule ^(.*)/$ /$1 [R=301,L]

  • 0