Исключить конкретный тип файлов из обработки.

Статус
В этой теме нельзя размещать новые ответы.

indian.rider

Постоялец
Регистрация
20 Окт 2008
Сообщения
119
Реакции
26
Мне не нужно чтобы css файлы НЕ попадали в редирект на index.php

И, что важно, css файл физически не существует. Он генерится. Конструкция RewriteCond %{REQUEST_FILENAME} !-f на него не подействует.

Должно быть что-то похожее на это:

RewriteCond %{REQUEST_URI} *что-то здесь*
RewriteCond %{REQUEST_URI} ^/(csv|news|includes|tags|archive|search|P[0-9]{2,8}) [NC]
RewriteRule ^(.*)$ /index.php?/$1 [L]

И я не могу понять какое условия нужно вставить в первую строку.

А еще кажется что тут просто... но 2 часа уже убил.
 
писать не [NC] а [L,NC]
чтоб этот урл дальше не обрабатывался. о тогда не дойдет до вашего
RewriteRule ^(.*)$ /index.php?/$1 [L]
 
Пытаюсь сделать правило типа этого:

RewriteCond %{REQUEST_URI} !^(.*\.css) [L,NC]

Валиться 500 ошибка.

а если так:

RewriteCond %{REQUEST_URI} !^(.*\.css) [NC]

происходит перенаправление на index.php

Я Вас правильно понял?
 
Чего-то я видать не понял.
То что не работает RewriteCond %{REQUEST_FILENAME} !-f это правильно, т.к. файла нет на самом деле.

У Вас ведь файл куда-то генерируется. Генерируйте файл, а уже потом грузите страницу которая его использует и будет счастье. Может попробуете описать как оно работает и как должно более подробно.
 
Похоже, что я вообще не с того конца начал.

Проблемы с css вторичны, и вылезли в ходе решения первой проблемы. Пока их можно опустить.

Основная Задача:

Есть такой путь:

1. mysite/news/19/11/2008/224318/

и такой:

2. mysite/news/224318/

а настоящий путь такой:

3. mysite/index.php/news/19/11/2008/224318/

Задача в том, чтобы работали первый и второй, а третий он типа реальный и на него происходит переадресация при помощи правил. Но его не видно.

Первый и второй путь -- чтобы сохранить совместимость между старой и новой версией. Определяющим в обоих случаях является id новости: 224318


Более того, думаю, что можно при вводе mysite/news/19/11/2008/224318/ превращать в это mysite/news/224318/ через [R]

Не знаю только как поисковики к этому отнесуться. Редирект все же.

Опять же:

RewriteRule ^news\/[0-9]{2}\/[0-9]{2}\/[0-9]{4}\/([0-9]{1,10})\/? /news/$1 [R]

RewriteRule ^(.*)$ /index.php/$1 [L]

Ошибка 500

Каждое правило работает по отдельности, но вместе никак.
 
Вам нужно все эти три ссылки в rewrite_engine привести к виду?
index.php?page=news&id=224318

Тогда пишите следующее
^news/([0-9]+)/([0-9]+)/([0-9]+)/([0-9]+)/$ ?page=news&id=$4
^news/([0-9]+)/$ ?page=news&id=$1

P.S. этого делать не надо
RewriteRule ^news\/[0-9]{2}\/[0-9]{2}\/[0-9]{4}\/([0-9]{1,10})\/? /news/$1 [R]
 
Вам нужно все эти три ссылки в rewrite_engine привести к виду?
index.php?page=news&id=224318

Тогда пишите следующее
^news/([0-9]+)/([0-9]+)/([0-9]+)/([0-9]+)/$ ?page=news&id=$4
^news/([0-9]+)/$ ?page=news&id=$1

Согласен, но кроме ^news... есть ссылки котрые можно было автоматом пускать на index.php

И очень бы хотелось иметь строчку в самом конце типа RewriteRule ^(.*)$ /index.php/$1/

индекс поймет все остальные случаи.

Но такая строчка -- ошибка 500.

Добавлено через 52 секунды
P.S. этого делать не надо
RewriteRule ^news\/[0-9]{2}\/[0-9]{2}\/[0-9]{4}\/([0-9]{1,10})\/? /news/$1 [R]

А почему? Хотя и сам чувствую что не стоит. Не не знаю почему.
 
А почему? Хотя и сам чувствую что не стоит. Не не знаю почему.
Потому что таким образом Вы двойной редирект сделаете. Тем более что я описал как его напрямую пустить.

Ну так пишите для других ссылок подобные правила, уверен что количество разделов у Вас не бесконечное.

Вот Вам строка
RewriteRule ^(.*)$ index.php?$1 [L,QSA]
все что не файл, каталог уходит в index.php
 
Потому что таким образом Вы двойной редирект сделаете. Тем более что я описал как его напрямую пустить.

Ну так пишите для других ссылок подобные правила, уверен что количество разделов у Вас не бесконечное.

Вот Вам строка
RewriteRule ^(.*)$ index.php?$1 [L,QSA]
все что не файл, каталог уходит в index.php

Ладно, с двойным редиректом, пока на слово поверю. Потом пойму :)

Не могу понять как работает [L,QSA]... смотрю в документацию и... вижу фигу ;)

---

У меня получилось вот таким образом отделить специальные (news) от всех остальных:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^news\/[0-9]{2}\/[0-9]{2}\/[0-9]{4}\/([0-9]{1,10})\/? /index.php/news/$1/
RewriteRule ^news\/([0-9]{1,10})\/? /index.php/news/$1/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^(news.*)
RewriteRule ^(.*)$ /index.php/$1/

Это нормальное решение?
 
Есть такое понятие ка избыточность
дважды написано
RewriteCond %{REQUEST_FILENAME} !-f
а так если все работает то норма
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху