URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID8
Нить номер: 3125
[ Назад ]

Исходное сообщение
"Mod Rewrite"

Отправлено Gandalf , 02-Мрт-05 06:59 
Задача 1: (наипростейшая…)
http://site.xx/forum и http://site.xx/forum/* должны явно (прямо в строке браузера) переадресоваться (редиректнуться) на http://forum.site.xx/*
* значит что любой путь и параметры должны быть сохранены ;) То есть http://site.xx/forum/showforum.php?param1=1¶m2=2 должно превратится в http://forum.site.xx/showforum.php?param1=1¶m2=2

Задача 2: (сложнее...)
Дано: (Direct Admin, это вам не cPanel ;))
http://site.xx/ официально кажет на сервере в /domains/site.xx/public_html/
http://site.yy/ официально кажет на сервере в /domains/site.yy/public_html/
Нужно:
http://site.XX/* (всё что угодно, НО КРОМЕ ПОДПАПОК) должно НЕявно (так, чтоб никто не догадался) переадресоваться (КАЗАТЬ) на внутреннюю папку /domains/site.YY/public_html/
(не забываем, что http://site.xx/test/ должно по прежнему казать в /domains/site.XX/public_html/test/

Кто-нибудь знает Решения?


Содержание

Сообщения в этом обсуждении
"Mod Rewrite"
Отправлено dev , 02-Мрт-05 15:27 
Все пишется внутри конфигурации виртуального хоста site.xx.

RewriteEngine   on
RewriteLog      /var/log/rewrite.log
RewriteLogLevel 9     # это чтоб видеть, почему не работает

>Задача 1: (наипростейшая…)
>http://site.xx/forum и http://site.xx/forum/* должны явно (прямо в строке браузера) переадресоваться (редиректнуться) на
>http://forum.site.xx/*
>* значит что любой путь и параметры должны быть сохранены ;) То
>есть http://site.xx/forum/showforum.php?param1=1¶m2=2 должно превратится в http://forum.site.xx/showforum.php?param1=1¶m2=2

RewriteRule ^/forum$      http://forum.site.xx/   [L,R]
RewriteRule ^/forum/(.*)$ http://forum.site.xx/$1 [L,R]

>Задача 2: (сложнее...)
>Дано: (Direct Admin, это вам не cPanel ;))
>http://site.xx/ официально кажет на сервере в /domains/site.xx/public_html/
>http://site.yy/ официально кажет на сервере в /domains/site.yy/public_html/
>Нужно:
>http://site.XX/* (всё что угодно, НО КРОМЕ ПОДПАПОК) должно НЕявно (так, чтоб никто
>не догадался) переадресоваться (КАЗАТЬ) на внутреннюю папку /domains/site.YY/public_html/
>(не забываем, что http://site.xx/test/ должно по прежнему казать в /domains/site.XX/public_html/test/

RewriteCond %{REQUEST_URI} ^/([^/]+)
RewriteCond /domains/site.xx/public_html/%1 !-d
RewriteRule ^/(.*)$ /domains/site.yy/public_html/$1 [L]

только убедись, что site.xx имеет право показывать файлы из /domains/site.yy каталога.

Кстати, ты не указал, что делать, если при запросе http://site.xx/test/ /domains/site.xx/public_html/test/ не существует. В данном случае будет показан /domains/site.yy/public_html/test/


"Mod Rewrite"
Отправлено XAnder , 02-Мрт-05 17:15 
>RewriteRule ^/forum$      http://forum.site.xx/   [L,R]
>RewriteRule ^/forum/(.*)$ http://forum.site.xx/$1 [L,R]

Не уверен, но кажется, что в строке браузера от этих правил ничего не изменится и Задача 1 не будет решена.


"Mod Rewrite"
Отправлено dev , 02-Мрт-05 17:55 
>>RewriteRule ^/forum$      http://forum.site.xx/   [L,R]
>>RewriteRule ^/forum/(.*)$ http://forum.site.xx/$1 [L,R]
>
>Не уверен, но кажется, что в строке браузера от этих правил ничего
>не изменится и Задача 1 не будет решена.

Флаг R как-раз указывает на внешний редирект.


"Mod Rewrite"
Отправлено XAnder , 03-Мрт-05 08:49 
>Флаг R как-раз указывает на внешний редирект.

Да, извиняюсь, недосмотрел :)


"Mod Rewrite"
Отправлено Gandalf , 03-Мрт-05 01:38 
в лог записалось это:
/home/account/domains/site.xx/public_html/.htaccess: RewriteLog not allowed here

Может надо не в /site.xx/public_html класть .htaccess ?

По любому, даже forum не редиректнулся... Да и вообще, наверное для forum то логичнее отдельный .htaccess в /home/account/domains/site.xx/public_html/forum/ положить?! (я это имел в виду...)

Надеюсь на помощь.


"Mod Rewrite"
Отправлено Gandalf , 03-Мрт-05 04:20 
Оказалось, что первая задача решается намного легче и удачнее:
в .htaccess пишется: "Redirect /forum/ http://forum.site.xx/"
и всё ;) Проблем со слешем нет и все параметры передаются! Красота.

а вот со второй пока глухо ;(
прописал:
RewriteEngine   on
RewriteCond %{REQUEST_URI} ^/([^/]+)
RewriteCond /domains/tver.bz/public_html/%1 !-d
RewriteRule ^/(.*)$ /domains/tver.ws/public_html/$1 [L]

и мне апач выдал:
You don't have permission to access / on this server.

Не понимаю как мне этот доступ разрешить... :(


"Mod Rewrite"
Отправлено dev , 03-Мрт-05 13:52 
>Оказалось, что первая задача решается намного легче и удачнее:

Конечно :) Именно поэтому надо расписывать условия задачи, а не указывать заранее методы ее решения.
Ты же хотел именно mod_rewrite (см. тему).

>и мне апач выдал:
>You don't have permission to access / on this server.

Перечитай еще раз, чего я написал:
1) Все писать в конфиге, а не в .htaccess
2) Разрешить доступ к /domains/tver.bz/public_html/, например, с помощью Directory

И смотри логи, а не выдаваемую страничку, там инфы гораздо больше.

P.S.: кстати, ты все-таки засветил имя своего сайта, хотя очень не хотел делать этого в первом посте :)


"Mod Rewrite в .htaccess !"
Отправлено Gandalf , 04-Мрт-05 02:58 
В том то и дело что у меня к конфиге доступа нет ;( Могу только .htaccess в директориях мутить. ВОТ!
А можно как-нибудь через .htaccess доступ дать к папкам?
Может что в /domains/tver.ws/public_html/ можно прописать чтоб из /domains/tver.bz/public_html/ доступ был?..

З.Ы. Гы :) Да я на каком-то форуме по апачу спросил, написав открыто, а мне предупреждение за рекламу и объяснение что нужно писать скрыто, а за ссылки на их форуме платить... Я их нах послал и меня забанили. Лол. Да и глянул - все так пишут, подумал что и тут так.


"Mod Rewrite в .htaccess !"
Отправлено dev , 04-Мрт-05 13:09 
>В том то и дело что у меня к конфиге доступа нет
>;( Могу только .htaccess в директориях мутить. ВОТ!
>А можно как-нибудь через .htaccess доступ дать к папкам?
>Может что в /domains/tver.ws/public_html/ можно прописать чтоб из /domains/tver.bz/public_html/ доступ был?..

Нет, нельзя. Принципиально. Иначе ты получил бы возможность читать любые файлы любых сайтов на этом серваке.
Попробуй обходной путь: внутри /domains/tver.ws/public_html/ сделай symlink на /domains/tver.bz/public_html/ и mod_rewrite'ом поренаправляй на него. Только не забудь вставить правило, что запрос на этот symlink не попадает под обычные правила, иначе (возможно) зациклишься.
Но это не будет работать если у тебя симлинки запрещены.

>З.Ы. Гы :) Да я на каком-то форуме по апачу спросил, написав
>открыто, а мне предупреждение за рекламу и объяснение что нужно писать
>скрыто, а за ссылки на их форуме платить... Я их нах
>послал и меня забанили. Лол. Да и глянул - все так
>пишут, подумал что и тут так.

Здесь это пофиг :) Здесь и откровенная реклама встречается. Просто многие не хотят светить свою внутренюю информацию.


"Mod Rewrite и SymLink в .htaccess ?!?"
Отправлено Gandalf , 05-Мрт-05 22:13 
...я, конечно, понимаю, что для человека так легко пишущего про Rewrite и SymLink могут показаться странными мои вопросы, но тем не менее:
Что это за странный SymLink (всё, что пишут в конференциях, так только вопросы по этой теме)? Как этот SymLink куда прописать и где есть доки на эту тему (на русском)?

З.Ы. А аська у Вас есть? Если да, то не могли бы вы мне стукнуть в номер ICQ 7767767. Если не трудно конечно, Там бы более быстро и обсудили мою проблему... Я б в долгу не остался ;)


"Mod Rewrite и SymLink в .htaccess ?!?"
Отправлено dev , 05-Мрт-05 23:35 
>...я, конечно, понимаю, что для человека так легко пишущего про Rewrite и
>SymLink могут показаться странными мои вопросы, но тем не менее:
>Что это за странный SymLink (всё, что пишут в конференциях, так только
>вопросы по этой теме)? Как этот SymLink куда прописать и где
>есть доки на эту тему (на русском)?

Симлинк это очень просто ;)
ln -s /domains/tver.bz/public_html/ /domains/tver.ws/public_html/newsite
Потом проверь, что есть доступ к http://tver.ws/newsite (правильность отображения страничек не требуется, главное чтобы хоть чего нибудь показал). Если работает - то соотв. меняй RewriteRule.
Если не работает - то только обращатся к админу.

>З.Ы. А аська у Вас есть? Если да, то не могли бы
>вы мне стукнуть в номер ICQ 7767767. Если не трудно конечно,
>Там бы более быстро и обсудили мою проблему... Я б в
>долгу не остался ;)

Аська есть, но мне лень консультации по ней давать :)
Я и здесь-то отвечаю по мере наличия времени и желания :)


"Mod Rewrite и SymLink в .htaccess ?!?"
Отправлено Gandalf , 07-Мрт-05 03:25 
Ну вот :(((
Ничего не понятно...
Где писать? в .htaccess? В какой директории? Как править Rule? Что такое newsite? Мои задачи ещё помните? :)
Я ж в этом профан, а мне советы как бывалому... Это несправедливо ;)))

"Mod Rewrite и SymLink в .htaccess ?!?"
Отправлено dev , 07-Мрт-05 12:59 
>Я ж в этом профан, а мне советы как бывалому... Это несправедливо
>;)))

Ну тогда начнем по-порядку.
1. Какой у тебя доступ к серверу: ftp, ssh, ...?


"Mod Rewrite и SymLink в .htaccess ?!?"
Отправлено Gandalf , 09-Мрт-05 04:00 
>>Я ж в этом профан, а мне советы как бывалому... Это несправедливо
>>;)))
>
>Ну тогда начнем по порядку.
>1. Какой у тебя доступ к серверу: ftp, ssh, ...?

ВОТ! Спасибо за понимание ;)
Доступ по FTP, SMTP, IMAP, WebMail ;) и панель управления DirectAdmin (там дофига всего - полное описание панели на русском тут: http://site-helper.ru/)

Каждый домен там имеет отдельную папку (в отличии от cPanel, где это не возможно). Папка на домен это ОЧЕНЬ хорошо, но если один сайт на 2-5 доменах одновременно, то не копии же класть!? Нужно как-то на главный всё заредиректить... :(


"Mod Rewrite и SymLink в .htaccess ?!?"
Отправлено dev , 10-Мрт-05 15:03 
>Доступ по FTP, SMTP, IMAP, WebMail ;) и панель управления DirectAdmin (там
>дофига всего - полное описание панели на русском тут: http://site-helper.ru/)

Ага, значит шела у тебя нет. Тогда последняя попытка:

RewriteEngine   on
RewriteCond %{REQUEST_URI} ^/([^/]+)
RewriteCond /domains/tver.bz/public_html/%1 !-d
RewriteRule ^/(.*)$ http://tver.ws/$1 [L,P]

И смотри у логах сайта tver.ws, к чему идет обращение.
Если не работает (а это очень вероятно) - то только в морг.


"Mod Rewrite в .htaccess !"
Отправлено Gandalf , 14-Мрт-05 08:02 
>>В том то и дело что у меня к конфиге доступа нет
>>;( Могу только .htaccess в директориях мутить. ВОТ!
>>А можно как-нибудь через .htaccess доступ дать к папкам?
>>Может что в /domains/tver.ws/public_html/ можно прописать чтоб из /domains/tver.bz/public_html/ доступ был?..
>
>Нет, нельзя. Принципиально. Иначе ты получил бы возможность читать любые файлы любых
>сайтов на этом серваке.
>Попробуй обходной путь: внутри /domains/tver.ws/public_html/ сделай symlink на /domains/tver.bz/public_html/ и mod_rewrite'ом поренаправляй
>на него. Только не забудь вставить правило, что запрос на этот
>symlink не попадает под обычные правила, иначе (возможно) зациклишься.
>Но это не будет работать если у тебя симлинки запрещены.
>

получил я доступ SSH
сделал symlink с /domains/tver.bz/public_html/redirect на /domains/tver.ws/public_html/
http://tver.bz/rewrite/ работает на ура!
Теперь мне, по идее, надо было реврайтом направить на линк (так как он в своей директории, если я правильно понял Ваш пример)... и я в /domains/tver.bz/public_html/.htaccess написал:
RewriteEngine on
Options +FollowSymLinks
RewriteCond %{REQUEST_URI} ^/([^/]+)
RewriteCond /%1 !-d
RewriteRule ^/(.*)$ /redirect/$1 [L]

но не пашет :( видимо не правильно я поправил RewriteRule или RewriteCond.
FollowSymLinks разрешено, проверил.


"Mod Rewrite в .htaccess !"
Отправлено dev , 14-Мрт-05 18:06 
>http://tver.bz/rewrite/ работает на ура!
>RewriteRule ^/(.*)$ /redirect/$1 [L]

Ну так /rewrite/ или /redirect/ ?
И что значит "не пашет"?

Попробуй вот так, с явным редиректом - увидишь, во что он переписывает адрес:

RewriteEngine   on
RewriteCond %{REQUEST_URI} ^/([^/]+)
RewriteCond /domains/tver.bz/public_html/%1 !-d
RewriteRule ^(.*)$ http://tver.ws/$1 [L,R]


"Mod Rewrite в .htaccess !"
Отправлено Gandalf , 15-Мрт-05 06:24 
>>http://tver.bz/rewrite/ работает на ура!
>>RewriteRule ^/(.*)$ /redirect/$1 [L]
>
>Ну так /rewrite/ или /redirect/ ?
>И что значит "не пашет"?
>
redirect... Глючу :)


Ура! Заработало ЭТО: (в /domains/tver.bz/public_html/.htaccess)
RewriteEngine on
Options +FollowSymLinks
RewriteCond %{REQUEST_URI} ^/([^/]+)
RewriteCond /domains/tver.bz/public_html/%1 !-d
RewriteRule ^(.*)$ /redirect/$1 [L]

и ещё: (в /domains/tver.ws/public_html/.htaccess)
RewriteEngine off

Как теперь добавить чтоб http://tver.bz/ и http://tver.bz/forum/ тоже редирактились? (второй RewriteCond отменяет Rewrite, если путь это папка, а это как раз папки... Что ещё добавить в правила? Только чтобы конкретные папки, а не все!)
А то сейчас дже http://tver.bz/index.php работает, а http://tver.bz/ нет :(


"Mod Rewrite в .htaccess !"
Отправлено dev , 15-Мрт-05 14:51 
>Как теперь добавить чтоб http://tver.bz/ и http://tver.bz/forum/ тоже редирактились? (второй RewriteCond отменяет
>Rewrite, если путь это папка, а это как раз папки... Что
>ещё добавить в правила? Только чтобы конкретные папки, а не все!)
>
>А то сейчас дже http://tver.bz/index.php работает, а http://tver.bz/ нет :(

Впиши нужные редиректы перед RewriteCond и не забудь про флаг [L], чтобы он дальше не искал. Если я еще не запутался в твоих сайтах, то:

>RewriteEngine on
>Options +FollowSymLinks

RewriteRule ^forum$      http://forum.tver.ws/   [L,R]
RewriteRule ^forum/(.*)$ http://forum.tver.ws/$1 [L,R]
RewriteRule ^$           /redirect/ [L]

>RewriteCond %{REQUEST_URI} ^/([^/]+)
>RewriteCond /domains/tver.bz/public_html/%1 !-d
>RewriteRule ^(.*)$ /redirect/$1 [L]


>и ещё: (в /domains/tver.ws/public_html/.htaccess)
>RewriteEngine off

Странно, это не должно влиять.


"Mod Rewrite"
Отправлено sergey12 , 04-Мрт-05 20:09 
Подскажите
надо вот что
esnm поддомен test.test.ru
и есть папка test.ru/test
вот сейчас сайт доустпен и проиндексирован и так и так
но мне надо чтобы както через mod rewrite настроит чтобы кто зашел по старому адресу test.ru/test/ .... автоматически был на test.test.ru


"Mod Rewrite"
Отправлено dev , 05-Мрт-05 02:58 
>Подскажите
>надо вот что
>esnm поддомен test.test.ru
>и есть папка test.ru/test
>вот сейчас сайт доустпен и проиндексирован и так и так
>но мне надо чтобы както через mod rewrite настроит чтобы кто зашел
>по старому адресу test.ru/test/ .... автоматически был на test.test.ru

Ну так и читай этот тред. Пример с http://site.xx/forum
Проводилось два решения.


"Mod Rewrite"
Отправлено sergey12 , 05-Мрт-05 11:52 
>>Подскажите
>>надо вот что
>>esnm поддомен test.test.ru
>>и есть папка test.ru/test
>>вот сейчас сайт доустпен и проиндексирован и так и так
>>но мне надо чтобы както через mod rewrite настроит чтобы кто зашел
>>по старому адресу test.ru/test/ .... автоматически был на test.test.ru
>
>Ну так и читай этот тред. Пример с http://site.xx/forum
>Проводилось два решения.

вот я сделал

RewriteEngine on
RewriteRule ^/shop$ http://shop.travels-ua.com/ [L,R]
RewriteRule ^/shop/(.*)$ http://shop.travels-ua.com/$1 [L,R]

не работает
должно щас по идее при наборе travels-ua.com/shop/  перекидывать на http://shop.travels-ua.com

но это не делается


"Mod Rewrite"
Отправлено dev , 05-Мрт-05 20:14 
>вот я сделал
>
>RewriteEngine on
>RewriteRule ^/shop$ http://shop.travels-ua.com/ [L,R]
>RewriteRule ^/shop/(.*)$ http://shop.travels-ua.com/$1 [L,R]
>
>не работает
>должно щас по идее при наборе travels-ua.com/shop/  перекидывать на http://shop.travels-ua.com
>
>но это не делается

1. RewriteLogLevel 9 и стотреть внимательно.
1a. Если нет доступа и настройкам хоста, то поставить Апач дома и тренироваться на кошечках.
2. Скорее всего - лишний слеш:
RewriteRule ^shop$ http://shop.travels-ua.com/ [L,R]
RewriteRule ^shop/(.*)$ http://shop.travels-ua.com/$1 [L,R]