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


Работа mod_rewrite в .htaccess


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

#1 R.Sergey

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

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

Отправлено 24 June 2012 - 04:12 AM

Читал, читал, что-то туго до меня доходит.

Нужен пример.
Задача такая

есть страница /test.html
нужно чтобы если запрашивается эта страница то ничего не происходило и открывалась именно эта страница.
если запрашивается любая другая страница с расширением html, то перебрасывало на туже страницу но с расширением php.

т.е.
RewriteRule ^([a-z0-9_-]+)\.html$   /$1.php [L]
если я правильно понимаю

Как правильно написать условия?
  • 0

#2 badisoft

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

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

Отправлено 24 June 2012 - 11:24 AM

ИМХО, более узкое условие пишется первым и дальше в квадратных скобках ставится признак, что дальнейшая обработка не требуется. Вроде, это как раз [L] и есть (last).
Т.е. если страница соответствует маске test.html, то реврайтим ее на что-нибудь, в твоем случаем на тот же test.html.
Если не соответствует, то идем дальше, к следующему rewriterule.
Но это именно ИМХО, я мало возился с .htaccess.
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)

#3 R.Sergey

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

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

Отправлено 24 June 2012 - 12:13 PM

Ну с этой страницей тест я вчера кажется разобрался, перенес просто свою строку выше и вродебы как заработало, но возник другой вопрос.
Допустим страница 404
в хтаксессе есть строка

ErrorDocument 404 /404.html


т.е. своя страница 404
есть эта страница и в корне сайта
http://cpu.vsupport.club/404.html
и нормально открывается

но редирект на нее не происходит почему-то.
из-за строки

RewriteRule ^([a-z0-9_-]+)\.html$ index.php?prod_alias=$1 [L]


внимание вопрос )))
Как быть?

Грубо говоря хтаксесс

ErrorDocument 404 /404.html
RewriteRule ^404\.html$ 404.html [L]
RewriteRule ^([a-z0-9_-]+)\.html$ index.php?prod_alias=$1 [L]


  • 0

#4 badisoft

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

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

Отправлено 24 June 2012 - 01:31 PM

Тут я не подскажу, т.к. не разбирался в очередности выполнения директив, но помню, что очередность там довольно хитрая и, мало того, в зависимости от каких-то условий зацикленная.

Вот, пожалуй, самая нормальная найденная мной статья по mod_rewrite. Она довольно заумна, но зато показывается именно суть устройства модуля.
http://www.opennet.r...US/mod_rewrite/
  • 0
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)