Показать полную графическую версию : mod_rewrite etc.
Страниц :
1
2
3
4
5
6
7
8
[
9]
10
если этого файла нет то должно выполняться перенаправление »
перед правилом дб условие
RewriteCond %{REQUEST_FILENAME} !-f
kamaikin
04-04-2010, 22:51
Цитата kamaikin:
если этого файла нет то должно выполняться перенаправление »
перед правилом дб условие
Код:
RewriteCond %{REQUEST_FILENAME} !-f »
Не работает ни так:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^image/small/([a-z0-9_]{2})([a-z0-9_]+)\.jpg(/?)+$ cache/image/small/$1/$1$2.jpg [L]
RewriteRule ^image/(small|big|original|pda)/([a-z0-9_]+).(jpg|png|gif)(/?)+$ images.php?size=$1&name=$2&ext=$3 [L]
ни так:
RewriteRule ^image/small/([a-z0-9_]{2})([a-z0-9_]+)\.jpg(/?)+$ cache/image/small/$1/$1$2.jpg [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^image/(small|big|original|pda)/([a-z0-9_]+).(jpg|png|gif)(/?)+$ images.php?size=$1&name=$2&ext=$3 [L]
Без [L] тоже пробовал(((
RewriteCond действует только на следующий RewriteRule
экранируйте точку, и (/?)+ »
это глупость...
Без [L] тоже пробовал((( »
L в основном ставится для перестраховки от зацикливания, но в этом правиле оно не грозит.
kamaikin
05-04-2010, 06:37
Sham! Вы уж простите клинического идиота, но никак не могу заставить работать.... или если файла нет выкидывает 404 или всегда отрабатывает скрипт....
kamaikin, у вас два правила фактически одинаковые (могут совпадать на один урл), поэтому путаница. имхо можно местами поменять (правило с RewriteCond на первое место), либо поискать другое решение, более ясное. тут вам никто не помощник, ибо все нюансы известны только вам...
зачем флаг N? »
чтобы от второго правила вернуться к первому, если не стоит слеш в конце, он его добавляет, а обработчик строки о слешем - первое правило. Я неправильно понимаю?
Почему при ссылке href="/ru/page2", он отправляет запрос верно, но в строке адреса ничего не меняется?
чтобы от второго правила вернуться к первому »
неправильно. там где http:// или [R] - значит клиенту отправляется заголовок Location и процесс завершается.
мануал (перевод) можно тут (http://www.egoroff.spb.ru/portfolio/apache/mod_rewrite.html) почитать, хотя имхо не идеальный...
Пожалуйста, подскажите такую вещь:
Нужно все урлы вида
/asdfasfd.html
Преобразовывать в
/asdfasfd.html?parameter=znach
Вставил в конфиг апача:
RewriteRule (.*)\.html$ $1.html?parameter=znach [R]
Браузер выдает:
Ошибка 310 (net::ERR_TOO_MANY_REDIRECTS): Обнаружено слишком много переадресаций.
Если в конфиге апача пишу:
RewriteRule (.*)\.html$ $1.html?parameter=znach [L]
Тогда не работает перенаправление.
Помогите пожалуйста понять как сделать правильно.
циклит, потому что шаблон слишком общий и нет флага L (R - для внешнего редиректа), нужно условие или более конкретный шаблон.
RewriteCond %{QUERY_STRING} !parameter\=znach
RewriteRule ^(.*)\.html$ $1.html?parameter=znach [L]
RewriteCond %{QUERY_STRING} ! »
Спасибо.
Я ещё тупанул ... это не единственное правило ... поставил его в самый верх... и заработало.
Artem-Samsung
11-07-2010, 03:35
В каком то из скриптов Wordpress, взял пример .htaccess для того что бы любой адрес, который обращается к веб-серверу обращался к файлу index.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Но мне нужно вписать еще строку, типа:
RewriteRule captcha.jpg /modules/captcha.php
Куда не втыкну, не получается.
Все равно все ссылается на index.php
Если вставить просто код:
DirectoryIndex index.php
Options +FollowSymlinks
RewriteEngine On
RewriteRule captcha.jpg /modules/captcha.php
, то работает, но нужно еще сохранить ту настройку, что бы любой адрес обращался к одному файлу
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d »
третьим можно добавить
RewriteCond %{REQUEST_URI} !captcha\.jpg
и свое потом куда угодно.
или сделайте файл captcha.jpg и положите куда надо (проверка идет на отсутствие файла и папки).
Здравствуйте.
Есть сайт. Он доступен по двум адресам: один адрес - домен сайта , второй адрес - сервисный адрес сайта. Мне нужно чтобы при переходе на домен сайта, он его перенаправлял на сервисный адрес сайта, причем так чтобы, все что после домена сайта, переносилось на сервисный адрес сайта, например:
www.site.com redirect --> www.service_address.com
www.site.com/home.html redirect --> www.service_address.com/home.html
www.site.com/css/style.css redirect --> www.service_address.com/css/style.css
первое что пришло в голову это на .htaccess следующей код:
Options +FollowSymLinks
RewriteEngine On
RewriteRule (.*) http://www.service_address.com/$1 [R=301,L]
, но поскольку два адреса сайта работают с одной директории, то получается вечный редирект. Как это сделать(желательно с помощью .htaccess)?
Большое спасибо..
нужно условие добавить
RewriteCond %{HTTP_HOST} ^(www\.)?site\.com$
RewriteRule ^(.*)$ http://www.service_address.com/$1 [R=301,L]
или так попробовать (чуть быстрее вроде)
RewriteCond %{HTTP_HOST} ^(www\.)?site\.com$
RewriteRule .? http://www.service_address.com%{REQUEST_URI} [R=301,L]
Sham, большое спасибо!!
кстати, маленький вопрос, уже давно хотел знать на него ответ.
Обязательно ли перед точками ставить слеш ^(www\.)?site\.com$ »?
Часто в статьях или еще где-то перед точками стоит слеш, но когда я сам пишу правила, то их не ставлю, и вроде работает))
Только что удалил слеши из выше написанного примера, и тоже работает)
P.S. если вместо www, может быть любое значение, то писать так:
RewriteCond %{HTTP_HOST} ^(.\.)?site\.com$ ?
Спасибо.
если вместо www, может быть любое значение »
RewriteCond %{HTTP_HOST} site\.com$
. - любой символ, в т.ч. и точка, поэтому нужно экранировать. rtm.
Sham, как всегда большое спасибо)
RewriteCond %{HTTP_HOST} site\.com$ код почему-то не работает, а так работает
RewriteCond %{HTTP_HOST} .site\.com$ ..
вопрос в содержимом %{HTTP_HOST}, куда смотрит регексп. Точка там ничего не решает, слева нет якоря на начало ^.
Подскажите знающие, всю голову уже сломал...
Как сделать редирект с домена в РФ
Нужно, чтобы
домен.рф
domain.ru
перенаправлялись на: domain.ru/doc/
плюс желательно "doc" скрыть.
не забудьте, что кириллические домены шлются в punycode (http://ru.wikipedia.org/wiki/Punycode) (ссылка на конвертер внизу есть).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.