|
|
|
| помогите, пож-ста :)
читал-читал mod_rewrite, и никак.
то ли у меня проблемы с регулярными выражениями
RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} /^[^(cat1)] OR
RewriteCond %{SCRIPT_FILENAME} /^[^(cat2)]
RewriteRule / http://newsite.ru/ [L] | |
|
|
|
|
|
|
|
для: kb_nn
(23.04.2012 в 12:04)
| | Попробуйте строку
RewriteRule / http://newsite.ru/ [L]
| заменить на
RewriteRule (.*) http://newsite.ru/ [L]
| Когда вы пишите только / - то переадресация только из корня, а предыдущие условия еще и такую переадресацию запрещают. | |
|
|
|
|
|
|
|
для: cheops
(23.04.2012 в 14:20)
| | странно. теперь у меня Internal Server Error., и со слешем одним тоже.
вроде до этого было перенаправление, но во всех случаях :(
всё равно спасибо :)
теперь хоть буду знать, что мыслю в нужном направлении.
а то вообще не был уверен, то ли делаю..
или у меня RedirectMatch работал?, да только неправильно..
теперь вообще при записи возникает ошибка..
еще ошибку нашел - должно быть [OR] | |
|
|
|
|
|
|
|
для: kb_nn
(23.04.2012 в 12:04)
| | 1. Как это у вас слеш стоит до знака "начало строки" (зачеркнутое)?
RewriteCond %{SCRIPT_FILENAME} /^[^(cat1)]
|
2. Ваши 2 первых RewriteCond не сработают по логике ИЛИ никогда. Сами прочитайте их: SCRIPT_FILENAME - не каталог cat1 или не каталог cat2. Т.е. условие выполняется всегда, т.к. даже если каталог - cat1, то он все-равно не cat2, т.е. всегда TRUE.
3. SCRIPT_NAME -это имя, которое уже прошло обработку предыдущими правилами. Вам нужно использовать REQUEST_URI
4. То, что сказал cheops
5. У вас не верный синтаксис отрицания. В РВ мод_реврайта символ ^ в [ ] не означает отрицание. Нужно использовать ! перед всей строкой.
6. Для редиректа на другой сайт нужно использовать внешнюю переадресацию: R=301
Учитывая все это получаем:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/(cat1|cat2)
RewriteRule ^(.*)$ http://newsite.ru/$1 [R=301,L]
| Здесь $1 - если на новом сайте нужно сохранить запрошенный путь. Если нет - уберите. | |
|
|
|
|
|
|
|
для: Sfinks
(24.04.2012 в 12:46)
| | низкий вам поклон.
только как я понял у меня еще проблемы с mod_rewrite
вроде в списке загруженных отображается, а RewriteEngine on выдает ошибку Internal Server Error.
всё-таки мир не без добрых людей. | |
|
|
|
|
|
|
|
для: kb_nn
(24.04.2012 в 14:17)
| | >вроде в списке загруженных отображается, а RewriteEngine on выдает ошибку Internal Server Error.
А у вас mod_rewrite подключен на уровне httpd.conf? Вы локально работаете или на сервере? | |
|
|
|
|
|
|
|
для: cheops
(24.04.2012 в 14:22)
| | нет, я не так выразился., а честнее- наврал.
load есть, а он не загружается, хоть и по указанному пути лежит.
через httpd.conf, локально.
а на сервере (модуль там загружен, в phpinfo его видно) эта строка выдает ошибку - Access Forbidden. | |
|
|
|
|
|
|
|
для: kb_nn
(24.04.2012 в 14:33)
| | проблема с mod_rewrite на локальном сервере решилась - у меня было два файла httpd.conf
всем спасибо за помощь и терпение :)
но проблема с переадресацей осталась.
в следующем случае портятся абсолютные пути к файлам со стилями и проч. для указанных каталогов
RewriteCond %{REQUEST_URI} !/^(.*?)/cat1
RewriteCond %{REQUEST_URI} !/^(.*?)/cat2
RewriteRule ^(.*)$ http://newsite.ru/ [R=301,L]
хотя сама переадресация работает только в нужных случаях. | |
|
|
|
|
|
|
|
для: kb_nn
(25.04.2012 в 09:30)
| | Добавьте еще такое ограничение
RewriteCond %{REQUEST_URI} ^(.*)(?<!js|css|gif|png|jpg|jpeg)$
|
| |
|
|
|
|
|
|
|
для: Sfinks
(25.04.2012 в 12:32)
| | слушайте! вот спасибо :) кажется помогло :)
только теперь я не понимаю, что оно означает | |
|
|
|
|
|
|
|
для: kb_nn
(25.04.2012 в 13:53)
| | Не редиректить запросы заканчивающиеся на js, css, gif, png, jpg, jpeg. | |
|
|
|
|
|
|
|
для: Sfinks
(25.04.2012 в 21:42)
| | а что означает "<"? | |
|
|
|
|
|
|
|
для: kb_nn
(26.04.2012 в 21:39)
| | ?<! - отрицательный просмотр назад. Т.е. перед концом строки $ не должно быть js|css|gif|png|jpg|jpeg.
В данном случае можно было написать и проще:
RewriteCond %{REQUEST_URI} !(js|css|gif|png|jpg|jpeg)$
| просто то у меня готовое было, но использовалось немного в другом контексте. | |
|
|
|
|
|
|
|
для: kb_nn
(25.04.2012 в 09:30)
| | Может я что-то не понимаю. Можете объяснить кажый символ в строке и что это значит в целом? Это по идее не должно работать. | |
|
|
|
|
|
|
|
для: Sfinks
(25.04.2012 в 12:34)
| | тут только первый слэш лишний, это я уже экспериментировал.
(.*?)/ до первого слеша в адресе.
в целом не cat1 в корневом каталоге сайта.
меня сейчас осенило - первый слеш ведь идет в http:// . но нет. не помогло и это. | |
|
|
|
|
|
|
|
для: kb_nn
(25.04.2012 в 13:42)
| | Не очень понимаю проблему, но пятой точкой чую что вам после RewriteEngine On нужно прописать и указывать пути не откуда-то там издалека, откуда вы указываете, а от корня сайта. | |
|
|
|