хитрый редирект с mod_rewrite (my.ru/ru/index.html -> my.ru/site/index.html?lang=ru)
Модераторы: SLEDopit, Модераторы разделов
-
SatanaClause
- Сообщения: 106
хитрый редирект с mod_rewrite
Перековырял все что нашел по модреврайте, чтото недогоняю... нужно все сделать исключительно с .htaccess.
Есть сайт, он находится в http://www.my.ru/site/index.html (сайт с cms, все php я уже переделал в html)
и есть переменная lang = (ru|en|lt) нужно в зависимости от /(ru|en|lt)/ показывать сайт с соответственно присвоенной lang и измененным путем
тоесть если пользователь наберет
http://www.my.ru/ru/index.html -> http://www.my.ru/site/index.html?lang=ru
http://www.my.ru/en/index.html -> http://www.my.ru/site/index.html?lang=en
http://www.my.ru/lt/index.html -> http://www.my.ru/site/index.html?lang=lt
соответственно вместо index.html может быть все что угодно.
http://www.my.ru/en/novosti.html -> http://www.my.ru/site/novosti.html?lang=en
http://www.my.ru/en/com,search/search.html -> http://www.my.ru/site/com,search/search.html?lang=en
http://www.my.ru/en/com,archive/ -> http://www.my.ru/site/com,archive/?lang=en
пользователь должен видить красивую ссылку, типо http://www.my.ru/ru/o_nas.html
Есть сайт, он находится в http://www.my.ru/site/index.html (сайт с cms, все php я уже переделал в html)
и есть переменная lang = (ru|en|lt) нужно в зависимости от /(ru|en|lt)/ показывать сайт с соответственно присвоенной lang и измененным путем
тоесть если пользователь наберет
http://www.my.ru/ru/index.html -> http://www.my.ru/site/index.html?lang=ru
http://www.my.ru/en/index.html -> http://www.my.ru/site/index.html?lang=en
http://www.my.ru/lt/index.html -> http://www.my.ru/site/index.html?lang=lt
соответственно вместо index.html может быть все что угодно.
http://www.my.ru/en/novosti.html -> http://www.my.ru/site/novosti.html?lang=en
http://www.my.ru/en/com,search/search.html -> http://www.my.ru/site/com,search/search.html?lang=en
http://www.my.ru/en/com,archive/ -> http://www.my.ru/site/com,archive/?lang=en
пользователь должен видить красивую ссылку, типо http://www.my.ru/ru/o_nas.html
Я люблю людей, люблю когда их нет;
Я бы вышел на болкон, и разрядил бы пистолет!
Я бы вышел на болкон, и разрядил бы пистолет!
-
KiWi
- Бывший модератор
- Сообщения: 2521
- Статус: статус, статус, статус
Re: хитрый редирект с mod_rewrite
И в чём он же он хитрый? Это самый стандартный вариант для mod_rewrite.
Что пробовали? Что не получилось?
Что пробовали? Что не получилось?
-
SatanaClause
- Сообщения: 106
Re: хитрый редирект с mod_rewrite
Тока давайте без высокомерия... О сложности судит каждый по знаниям, я в это профан… Ну не работал я с mod_rewrite, не довелось...
Руководствуясь апачевским мануалом и вот этим http://www.pcre.ru/docs/apache/text/urltrans/ (ссылка не моя
Код: Выделить всё
RewriteEngine On
RewriteBase /site
RewriteCond ${REQUEST_URI} ^.*\/(ru|en|lt)\/.*$ [NC]
RewriteRule http://my.ru/site/?lang=$1 [L]А неполучилось собственно говоря все, не работает.
Я люблю людей, люблю когда их нет;
Я бы вышел на болкон, и разрядил бы пистолет!
Я бы вышел на болкон, и разрядил бы пистолет!
-
megabrain
- Сообщения: 10
- ОС: FC8
Re: хитрый редирект с mod_rewrite
Необходимо включить отладку модреврайта.. (в доке написано как и что)..
и посмотреть где затык..
лично я вижу что по указанным правилам переадресация будет только на индексную страницу
и посмотреть где затык..
лично я вижу что по указанным правилам переадресация будет только на индексную страницу
-
KiWi
- Бывший модератор
- Сообщения: 2521
- Статус: статус, статус, статус
Re: хитрый редирект с mod_rewrite
Ну... Можно, например, заглянуть в документацию к mod_rewrite на apache.org и посмотреть сколько параметров у RewriteRule.
А ещё можно выкладывать сюда не "что-то типа".
А ещё -- внимательнее смотреть на примеры...
Да и описывать можно ровно то, что нужно(это уже про RewriteCond).
А я вижу, что mod_rewrite пошлёт в далёкое пешее путешествие.
-
SatanaClause
- Сообщения: 106
Re: хитрый редирект с mod_rewrite
Для начала и индекс пойдет, Москва не сразу строилась 
А куда правильнее этот .htaccess ложить? В корень или /site ?
пробую так: /.htaccess, запрос http://my.ru/ru/
RewriteCond ${REQUEST_URI} ^.*\/(ru|en|lt)\/.*$ [NC]
RewriteRule http://my.ru/site/?lang=$1 [L]
access.log - - [03/Dec/2007:14:52:30 +0000] "GET /ru/ HTTP/1.0" 404 261 "-" "Mozilla/4.0 (compatible; MSIE
error.log File does not exist: /usr/local/www/data/my.ru/http/ru/
rewrite.log пусто, в него вообще ничего не пишется, хотя все php переделываются в html в нижустоящих каталогах
добавил примерно около
HostnameLookups Off
ErrorLog /usr/local/www/log/httpd-error.log
RewriteLog /usr/local/www/log/rewrite.log если добавлять в виртуальные хосты, то файл даже не создается
правило просто не срабатывает...
А куда правильнее этот .htaccess ложить? В корень или /site ?
пробую так: /.htaccess, запрос http://my.ru/ru/
RewriteCond ${REQUEST_URI} ^.*\/(ru|en|lt)\/.*$ [NC]
RewriteRule http://my.ru/site/?lang=$1 [L]
access.log - - [03/Dec/2007:14:52:30 +0000] "GET /ru/ HTTP/1.0" 404 261 "-" "Mozilla/4.0 (compatible; MSIE
error.log File does not exist: /usr/local/www/data/my.ru/http/ru/
rewrite.log пусто, в него вообще ничего не пишется, хотя все php переделываются в html в нижустоящих каталогах
добавил примерно около
HostnameLookups Off
ErrorLog /usr/local/www/log/httpd-error.log
RewriteLog /usr/local/www/log/rewrite.log если добавлять в виртуальные хосты, то файл даже не создается
правило просто не срабатывает...
Я люблю людей, люблю когда их нет;
Я бы вышел на болкон, и разрядил бы пистолет!
Я бы вышел на болкон, и разрядил бы пистолет!
-
SatanaClause
- Сообщения: 106
Re: хитрый редирект с mod_rewrite
Для проверки лога сделал
Redirect /ru http://my.ru/site/?lang=ru
правило работает, но лог rewrite.log пустой
Redirect /ru http://my.ru/site/?lang=ru
правило работает, но лог rewrite.log пустой
Я люблю людей, люблю когда их нет;
Я бы вышел на болкон, и разрядил бы пистолет!
Я бы вышел на болкон, и разрядил бы пистолет!
-
KiWi
- Бывший модератор
- Сообщения: 2521
- Статус: статус, статус, статус
Re: хитрый редирект с mod_rewrite
Правильно, потому что кто-то упорно не хочет читать документацию до конца: http://httpd.apache.org/docs/2.2/mod/mod_r...html#RewriteLog
Хинт -- там 2 подряд директивы, относящиеся к логам.
Второй хинт -- значение по умолчанию второй директивы.
Третий хинт -- обе директивы отвечают за логгирование действий mod_rewrite, а не за смену фаз луны.
P.S.: ответа но оба моих предыдущих замечания есть на той же странице(я про те, что связаны с RewriteRule & RewriteCond, если у кого проблемы с чтением написанного, либо памятью).
-
SatanaClause
- Сообщения: 106
Re: хитрый редирект с mod_rewrite
мдя... с логлевелом лопухнулся... Мне кажется что я чтото не то с регулярным выражением делаю, оно просто игнарируется, но когда я его пробую в перл скрипте, оно проходит. Влял для проверки кусок из мануала, без рег. выражений
и неработает
точнее работает, а должно блокирывать. Но когдпа ставлю заведомо неправильный флаг [FDF], ругается...
/.htaccess: RewriteRule: unknown flag 'FDF'\n
Код: Выделить всё
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{TIME_HOUR}%{TIME_MIN} >1000
RewriteCond %{TIME_HOUR}%{TIME_MIN} <1900
RewriteRule .* - [F]и неработает
/.htaccess: RewriteRule: unknown flag 'FDF'\n
Я люблю людей, люблю когда их нет;
Я бы вышел на болкон, и разрядил бы пистолет!
Я бы вышел на болкон, и разрядил бы пистолет!
-
SatanaClause
- Сообщения: 106
Re: хитрый редирект с mod_rewrite
вот
...
в броузере пишет The page cannot be found (404) хотя по ссылке http://my.ru/site/?lang=ru все работает
Код: Выделить всё
Options +FollowSymLinks
RewriteEngine On
RewriteRule (ru|lt|en) http://my.ru/site/?lang=$1 [L]...
Код: Выделить всё
.../] rewrite ru/ -> http://my.ru/site/?lang=ru
.../] internal redirect with /site/ [INTERNAL REDIRECT]
....lt/http/cms/] pass through /usr/local/www/data/my.ru/http/site
....lt/http/cms/] pass through /usr/local/www/data/my.ru/http/site/index.php
...[04/Dec/2007:10:17:25 +0000] "GET /ru/ HTTP/1.0" 404 176 "-" "Mozilla/4.0 (compatibl...в броузере пишет The page cannot be found (404) хотя по ссылке http://my.ru/site/?lang=ru все работает
Я люблю людей, люблю когда их нет;
Я бы вышел на болкон, и разрядил бы пистолет!
Я бы вышел на болкон, и разрядил бы пистолет!
-
KiWi
- Бывший модератор
- Сообщения: 2521
- Статус: статус, статус, статус
Re: хитрый редирект с mod_rewrite
SatanaClause писал(а): ↑04.12.2007 13:20в броузере пишет The page cannot be found (404) хотя по ссылке http://my.ru/site/?lang=ru все работает
Internal redirect есть? index.php оно само дорисовывает? Вот и всё -- все вопросы к CMS.
-
SatanaClause
- Сообщения: 106
Re: хитрый редирект с mod_rewrite
Мдя... Картина Репина, приплыли...
А если пробывать с флагом [P] статистика сайта будет нормальная или как после прокси???
пришел вот к такому
RewriteRule (ru|lt|en)/(.*) /site/$2&lang=$1 [L]
Проблема в том что не передается то что после "?", тоесть ссылка http://my.ru/en/index.php?option=com_conte...=4&Itemid=5
лог
а где все ?option=com_content&task=view&id=4&Itemid=5 ???
А если пробывать с флагом [P] статистика сайта будет нормальная или как после прокси???
пришел вот к такому
RewriteRule (ru|lt|en)/(.*) /site/$2&lang=$1 [L]
Проблема в том что не передается то что после "?", тоесть ссылка http://my.ru/en/index.php?option=com_conte...=4&Itemid=5
лог
Код: Выделить всё
] rewrite en/index.php -> /site/index.php?lang=en
] internal redirect with /site/index.php [INTERNAL REDIRECT]
lt/http/site/] pass through /usr/local/www/data/alan.lt/http/site/index.phpа где все ?option=com_content&task=view&id=4&Itemid=5 ???
Я люблю людей, люблю когда их нет;
Я бы вышел на болкон, и разрядил бы пистолет!
Я бы вышел на болкон, и разрядил бы пистолет!