Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум Apache

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Флаги RewriteRule

Сообщения:  [1-9] 

 
 автор: Sfinks   (13.03.2012 в 01:17)   письмо автору
 
   для: MHz   (13.03.2012 в 01:06)
 

кстати после RewriteEngine On укажите RewriteBase /
и в
RewriteRule ^text/$ /querty/index.php?q=430 [L]
первый слеш писать не нужно. Т.е.
RewriteRule ^text/$ querty/index.php?q=430 [L]

  Ответить  
 
 автор: Sfinks   (13.03.2012 в 01:13)   письмо автору
 
   для: MHz   (13.03.2012 в 01:06)
 

Покажите .htaccess полностью, если можно?

  Ответить  
 
 автор: Sfinks   (13.03.2012 в 01:12)   письмо автору
 
   для: MHz   (13.03.2012 в 00:53)
 

Вот сделаете вы, например через пол года, например смену шкурок на сайте (или любой динамически генерирующийся ява-скрипт или еще что-то не стационарное), но захотите чтоб пользователь не видел где и как это происходит.... И напишите вы правило, например:
RewriteRule style.css style.css.php?version=11
и не будет оно работать )
Потому что правила
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_URI} !(.*)/$  
RewriteRule ^(.*)$ /$1/ [R=301,L]
допишут к нему слеш, и будет у вас style.css.php/?version=11

Поэтому правила дописывания слеша берите из вышеуказанной темы. А
RewriteRule ^text/$ /querty/?q=430 [L]
лучше исправить на конкретное
RewriteRule ^text/$ /querty/index.php?q=430 [L]

В остальном верно )

> Еще не пойму, внешний редирект будет происходить сразу или после прохода по всем правилам?
после. Но они ни одно не подойдут. А если подойдут, значит к ним слеш не надо дописывать.

  Ответить  
 
 автор: MHz   (13.03.2012 в 01:06)   письмо автору
 
   для: MHz   (13.03.2012 в 00:53)
 

Блин, не получается ничего(( Не знаю что я неправильно делаю, не пойму где все начинает не так работать =( и RewriteLog оказывается только через httpd.conf можно включить, доступа к которому нету.

  Ответить  
 
 автор: MHz   (13.03.2012 в 00:53)   письмо автору
 
   для: Sfinks   (12.03.2012 в 23:24)
 

Честно не уверен что понимаю. Только осваиваю mod_rewrite.

Получается, исправляем правило чтобы оно имело вид
RewriteRule ^text/$ /querty/?q=430 [L]

Т.е. если я правильно понимаю, убираем "?", слеш в конце становится обязательным.
Если на сервер приходит запрос site.ru/text без слеша в конце, то написаное выше правило уже не подойдет.
В конце добавляем правило
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ /$1/ [R=301,L] 

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

  Ответить  
 
 автор: Sfinks   (12.03.2012 в 23:24)   письмо автору
 
   для: MHz   (12.03.2012 в 22:21)
 

А вы попробовали?

Исправьте ваши правила:
RewriteRule ^tratata/?$ /querty/?q=430 [L] 
RewriteRule ^tratata2/?$ /querty/?q=432 [L]
чтоб они на конкретные файлы перенаправлялись и были обязательно со / в конце, а дописывание / с внешним редиректом вставьте почти в конец htaccess. Тогда при вводе урл без / все редиректы будут игнориться, под конец дописываться слеш, внешний релирект и повторный проход правил..... Теперь подходящее правило будет подобрано, REQUEST_FILENAME будет с расширением на конце и дописывание слеша проигнорируется.

  Ответить  
 
 автор: MHz   (12.03.2012 в 22:21)   письмо автору
 
   для: Sfinks   (12.03.2012 в 21:42)
 

В той теме как я понял у человека не работало само правило преобразования. У меня это правило работает, только оно конфликтует с другими преобразованиями.

  Ответить  
 
 автор: Sfinks   (12.03.2012 в 21:42)   письмо автору
 
   для: MHz   (12.03.2012 в 19:48)
 

Посмотрите эту тему

  Ответить  
 
 автор: MHz   (12.03.2012 в 19:48)   письмо автору
 
 

Доброго времени суток!
Появилась задача с апачем, никак не могу добиться нужного результата.
Требуется добавить в конце всех URL директорий слэш, редиректить все страницы без слеша в конце, на страницы со слешем.
Проблема в том, почти все URL сделаны тоже через RewriteRule.
И вот не знаю, толи я порядок не соблюдаю, но думаю проблема во флагах, в общем получается, что страница редиректится сначала, по моему правилу, а затем по предыдущему, т.е. получается два редиректа на странице!

Выглядит это все в htaccess примерно так:


RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ /$1/ [R=301,L]

RewriteRule ^tratata/?$ /querty/?q=430 [L]
RewriteRule ^tratata2/?$ /querty/?q=432 [L]

......



И получаю такие заголовки c одной страницы:

HTTP/1.1 301 Moved Permanently
Date: Mon, 12 Mar 2012 15:36:07 GMT
Server: Apache/1.3.37 (Unix) PHP/5.2.10
Location: http://site.ru/tratata/qwerty/

...
HTTP/1.1 301 Moved Permanently
Date: Mon, 12 Mar 2012 15:36:07 GMT
Server: Apache/1.3.37 (Unix) PHP/5.2.10
Location: http://www.site.ru/tratata/querty/?q=423

...
HTTP/1.1 200 OK
Date: Mon, 12 Mar 2012 15:36:07 GMT
Server: Apache/1.3.37 (Unix) PHP/5.2.10
X-Powered-By: PHP/5.2.10


В апаче не силен, поэтому прошу сразу ткнуть носом куда копать и как можно исправить.
Задача срочная! Пожалуйста помогите!

  Ответить  

Сообщения:  [1-9] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования