- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Подскажите как сделать что бы эти правила не конфликтовали между собой:
RewriteRule ^(.*)/(.*)/$ catalog.php?brand=$1&name=$2 [QSA]
RewriteRule ^(.*)/$ catalog.php?brand=$1 [QSA]
Мне нужно что бы страницы вида:
Sony/
Sony/Cyber-DSC-N2/
открывали файл catalog.php соответсвенно с 1 или 2мя переменными
Я по разному пытался ими крутить но получалось что одно из правил не срабатывает
RewriteRule ^(.*)/(.*)/$ catalog.php?brand=$1&name=$2 [QSA,L]
RewriteRule ^(.*)/$ catalog.php?brand=$1 [QSA,L]
RewriteRule ^([^/]+)/$ catalog.php?brand=$1 [QSA]
RewriteRule ^([^/]+)/([^/]+)/$ catalog.php?brand=$1&name=$2 [QSA]
попробуй так и именно в таком порядке
Я уже разобрался сделав вот так:
RewriteRule ^(.*)/(.*)/$ catalog.php?brand=$1&name=$2 [QSA]
RewriteRule ^(.*)/$ catalog.php?brand=$1&name=$2 [QSA]
А что значит буква L в твоем примере?
Проверил твои примеры оба рабатают!
А что значит [^/]+ и чем она отличается от (.*) ?
а откуда здесь вторая переменная?
RewriteRule ^(.*)/$ catalog.php?brand=$1&name=$2 [QSA]
Я уже разобрался сделав вот так:
RewriteRule ^(.*)/(.*)/$ catalog.php?brand=$1&name=$2 [QSA]
RewriteRule ^(.*)/$ catalog.php?brand=$1&name=$2 [QSA]
А что значит буква L в твоем примере?
Второе не совсем правильно, $2 нет
L - последнее правило, если сработало то дальше не надо идти.
Проверил твои примеры оба рабатают!
А что значит [^/]+ и чем она отличается от (.*) ?
это условия такие:
например пишешь так
[^тут начинаешь переберать все символы которых не должно быть в этой строчке, т.е. если в этой строке не должно быть знака / или проверялось только до него, то делай так [^/] можно так же [^a-z] это будет значить что весь английский алфавит не должен быть в строке
(.*) - означает, что здесь могут быть какие то символы, а могут и не быть
(.+) - означает, что тут обязательно должны быть какие то символы, если нет, то и условие не выполняется!
А теперь другой вопрос как сделать так что бы слэш на конке не влиял, и при этом не возникало такой ситуации:
$brand = Sony/Cyber-DSC-N2
вместо
$brand = Sony
$name = Cyber-DSC-N2
которая возникает если:
RewriteRule ^(.*)/(.*)/?$ catalog.php?brand=$1&name=$2 [QSA]
RewriteRule ^(.*)/?$ catalog.php?brand=$1 [QSA]
Если делать так:
RewriteRule ^(.*)/(.*)/$ catalog.php?brand=$1&name=$2 [QSA]
RewriteRule ^(.*)/?$ catalog.php?brand=$1 [QSA]
RewriteRule ^(.*)/(.*)$ catalog.php?brand=$1&name=$2 [QSA]
RewriteRule ^(.*)$ catalog.php?brand=$1 [QSA]
Если делать так то картинки не показываются несмотря на
RewriteCond %{REQUEST_URI} !images
с вашими примера ошибки аналогичные
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/(.+)/$ catalog.php?brand=$1&name=$2 [QSA,L]
RewriteRule ^(.+)/$ catalog.php?brand=$1 [QSA,L]
RewriteRule ^(.+)/(.+)$ catalog.php?brand=$1&name=$2 [QSA,L]
RewriteRule ^(.+)$ catalog.php?brand=$1 [QSA,L]
последнее обрабатывает все запросы /aaa, /bbb, которые не существуют в файловой системе
Да все равно пытается картинки как catalog.php окрывать