Форум программистов, компьютерный форум, киберфорум
Наши страницы
Apache, htaccess
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
dadli
10 / 10 / 0
Регистрация: 08.05.2011
Сообщений: 142
1

RewriteCond влияет толко для один, следушчи RewriteRule. можно как-то превишать количество RewriteRule

21.01.2012, 16:31. Просмотров 3437. Ответов 1
Метки нет (Все метки)

здраствуите, вот что интересно, сделаю mod_rewrite и для етого в .htaccess фаиле пишу

Код
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule что-то преобразование
RewriteRule что-то преобразование2
RewriteCond влияет толко на первом RewriteRule, для втарого RewriteRule ети условие не работает и для того чтоб втарои RewriteRule "понимал" условие, придиотся сделать так:

Код
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule что-то преобразование

RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule что-то преобразование2

вопрос: можно как-то определит, что RewriteCond работал для заданнои количество раз RewriteRule ?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.01.2012, 16:31
Ответы с готовыми решениями:

Не пойму как работает RewriteCond и RewriteRule
Вот код из htaccess AddDefaultCharset utf-8 DirectorySlash Off RewriteEngine On Options...

RewriteRule - переписать один GET-параметр, оставив другой
Здравствуйте. Так получилось, что из-за особенностей авторизации на RTMP-сервере надо...

RewriteRule для скачивания файла
Помогите составить правило для скачивания файл PDF PHP скрипт генерирует pdf файлы, при...

Составить правило RewriteRule для .htaccess
Привет. Есть ссылка вида http://domen.com/papka/?from=nokia&to=samsung нужно чтобы сайт...

Как создать два RewriteRule?
Есть htaccess, маршрутизация (роутинг) RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f...

1
Vovan-VE
13177 / 6564 / 1039
Регистрация: 10.01.2008
Сообщений: 15,069
22.01.2012, 08:57 2
Проблема вся в том, что порядок выполнения следующий:
  1. Проверка совпадения RewriteRule;
  2. Проверка совпадений RewriteCond, если есть;
  3. Замена.
Напрямую, имхо, нет способа применить один и тот же RewriteCond к нескольким RewriteRule'ам.

Способ 1: цепь.

У RewriteRule'а есть флаг C (chain). Следующий RewriteRule, который идет после данного с флагом C, будет выполнен только если этот выполнился. Т.е. выполнение всей цепи RewriteRule'ов, объединенных через [C], будут прервано, как только один не совпадет (каждый следующий будет выполнен, только если выполнились все предыдущие).
Perl
1
2
3
4
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule что-то преобразование [C]
RewriteRule что-то преобразование2
Проблема в том, что, скорее всего, такое поведение не соответствует поставленной задачи.

Способ 2: триксовый.

Отрицательный(-ые) RewriteCond'ы + фиктивное всегда истинное правило без замены с флагом "пропустить следующие N правил"
Perl
1
2
3
4
5
6
7
8
9
10
11
12
13
# # было так
# RewriteCond %{REQUEST_FILENAME} !-f  
# RewriteCond %{REQUEST_FILENAME} !-d
 
# после отрицания стало так:
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
# всегда истина, ничего не заменяем, пропустить следующие 2 правила (S - Skip)
RewriteRule .? - [S=2]
 
RewriteRule что-то преобразование
RewriteRule что-то преобразование2
# здесь обязательно коммент о том, что данный фрагмент неделим от самого его начала
Проблемы:
  • Ухудшение читабельности кода из-за отрицательного условия (спасаться подробными комментариями в коде).
  • После добавления/удаления RewriteRule'ов в фрагмент обязательно нельзя забывать о том фисле, где указано их количество (сколько пропустить).
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.01.2012, 08:57

Настроить RewriteRule для замены хоста в *чужих* URL
Есть Домашнийкомпьютер с Windows 7 SP 1Rus 64 bit. На нём локально на 127.0.0.1:80 установлен...

Настроить RewriteRule для автоматической авторизации на *чужом* https-сервере
На компьютере с windows 7 sp1 64bit Rus на 127.0.0.1:80 запущен Apache 2.4. RewriteRule меняет...

RewriteRule - Как исправить ошибку, якобы вызова папки?
RewriteEngine on RewriteRule ^user/(+)$ profile.php?id=$1 Проблема такая. Когда захожу по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.