Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Apache+mod_rewrite

Модерирует : lynx, Crash_Master, dg, emx, ShriEkeR

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

Открыть новую тему     Написать ответ в эту тему

Vanya

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Значит так-с. (АПАЧ)
Есть такая конструкция http://domain.ru/?id=1
Надо чтобы была такая http://domain.ru/chapter1 ну или http://domain.ru/1
И ко всему прочему, чтобы это еще и работало. Есть такой механизЬм mod_rewrite и что то типа RwriteEngine on прописывается в .htaccess Но как это настраивается чтобы было как мне надо, я не знаю. Кто сможет чем помочь?
 
 


FAQ по Apache
Apache + mod_rewrite: замена ссылок
Руководство по URL преобразованиям
Модуль Apache mod_rewrite - подробнейшее описание на русском

Всего записей: 8 | Зарегистр. 19-09-2002 | Отправлено: 08:53 30-10-2002 | Исправлено: lynx, 01:01 15-02-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nastavnik

Цитата:
Подскажите как устранить проблему с помощью mod_rewrite

прописать в httpd.conf или htaccess index.php в DirectoryIndex
удалить index.htm
либо тогда перекидывать запросы вида /?forum=..
честно на index.php?forum=..

Цитата:
(должно конечно http://myname/ndex.php?forum=programming)  

не должно.. порядок поменяй файлам в DirectoryIndex.. но тогда любой запрос в диру будет сначала идти к index.php


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 21:07 22-10-2004
nastavnik



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
 
либо тогда перекидывать запросы вида /?forum=..
честно на index.php?forum=..
 

безусловно лучший вариант,
подскажите pls как сделать.

Всего записей: 46 | Зарегистр. 21-09-2004 | Отправлено: 14:12 23-10-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
nastavnik

Цитата:
безусловно лучший вариант,  

честно я имел ввиду так и писать.. index.php?forum=
Почему? потому что апач начинает перебирать DirectoryIndex файлы по порядку, токльо потом цепляя к ним запрос ?forum=
Вот скажи мне.. зачем в  одной дире index.html и index.php?
 


----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:04 24-10-2004
nastavnik



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Вот скажи мне.. зачем в  одной дире index.html и index.php?

index.php - необходимый файл для функционирования скрипта, а сайту нужна стартовая страничка. Запрос вида ?forum= должен быть преобразован/переадресован на index.php?forum=
Вот.

Всего записей: 46 | Зарегистр. 21-09-2004 | Отправлено: 01:37 24-10-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
index.php - необходимый файл для функционирования скрипта,

ну так поменяй ему имя.. или указывай URL полностью.. или перенеси его в отдельную диру.
но если хочется поизвращаться, то вот
RewriteCond  %{QUERY_STRING}   forum=(.*)
RewriteRule ^/index.html    /index.php?forum=%1

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 02:41 24-10-2004 | Исправлено: Cheery, 04:43 24-10-2004
nastavnik



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Все-таки решил index.php поместить в директорию forums. Теперь URL имеет вид http://myname/forums/?forum=..
А вот что из этого получилось http://forum.ru-board.com/topic.cgi?forum=25&topic=3889#1

Всего записей: 46 | Зарегистр. 21-09-2004 | Отправлено: 13:59 24-10-2004
xy



ХУдератор
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
мне надо, чтобы любой урл вида
 
хттп://урл/
хттп://урл
хттп://урл/чего-то-там
 
переходил в
хттп://урл/РУ/(далее по тексту)
 
делал как написано тут: http://www.egoroff.spb.ru/portfolio/apache/rewriteguide.html
 
RewriteEngine on
RewriteRule   ^/$  /RU/  [R]
 
но эффект был нулевой - что я сделал не так?
 
+ еще надо бы, чтоб это правило _не_ распространялось на папку и подпапки
хттп://урл/EN/..
 
помогите, люди добрые:)

----------
Счастливые мысли приводят к счастливой клеточной биохимии

Всего записей: 10530 | Зарегистр. 28-05-2003 | Отправлено: 19:28 05-11-2004
Tropin



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
xy
А подробнее про "эффект был нулевой", что в логах и что на экране?

Всего записей: 538 | Зарегистр. 25-11-2002 | Отправлено: 11:53 06-11-2004
Infection

iB3 PostgreSQL Coder
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
я начинаю потихонечку сходить с ума
 
был у меня сайт, и к были на нем файлы в корне
 
resort
resorts
country
counrties
narration
narrations
 
файлы работали в апаче как  
 
/resort?id=24 или /resorts?id=24
/country?id=256 или /countries?id=256
 
теперь этих файлов нету, вместо них index.php, который работает как
 
/index.php?Resort=24
/index.php?Country=256
 
 
Ну, чтобы старые страницы открывались, которые до сих пор висят во всяких поисковиках, сделал следующее:
 
        RewriteCond     %{REQUEST_URI}  ^/resort.*              [OR]
        RewriteCond     %{REQUEST_URI}  ^/countr.*              [OR]
        RewriteCond     %{REQUEST_URI}  ^/narration.*
 
        RewriteRule     "^resort.+id\=([0-9]+)$"  "index.php?Resort=$1"
 
читаем "
начинается с букв r, e, s, o, r, t,  
далее следует неопределенное количество обязательных символов пока не найдем буквы i,d вместе,  
затем =  
и группа обязательных цифр"
 
вроде /resort?id=24 и /resorts?id=24 попадают под это правило, ан не работает
 
под .+ попадают "s?" или просто "?"
 
чего не так?
 

Всего записей: 352 | Зарегистр. 21-12-2001 | Отправлено: 13:45 08-11-2004
jason32



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
По-моему,птичка  "^" должна стоять САМОЙ ПЕРВОЙ,иначе она работает как отрицание(или вообще не работает,не помню точно).Так что кавычка " явно лишняя.
 
Добавлено
INFECTION,я,кстати тоже всех тут спрашиваю-как экранировать "?" и возможно ли это вообще.У меня нехорошее предчувствие,что URL со знаком вопроса APACHE раскладывает самостоятельно на переменные до всяких модреврайтов.Жду подтверждения уважаемых людей.
lynx,ОТЗОВИСЬ!!!!

Всего записей: 714 | Зарегистр. 08-11-2004 | Отправлено: 03:34 09-11-2004
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Infection
 
RewriteCond     %{REQUEST_URI}  ^/resort.*              [OR]  
RewriteCond     %{REQUEST_URI}  ^/countr.*              [OR]
RewriteCond     %{REQUEST_URI}  ^/narration.*  
RewriteRule     ^/resort.+id\=([0-9]+)$  index.php?Resort=$1
 
а так?  
 
возможно нужен еще один RewriteCond
RewriteCond %{QUERY_STRING}      id=([0-9]+)  
тогда тут
 
RewriteRule     ^/resort.*$  index.php?Resort=%1

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 03:45 09-11-2004 | Исправлено: Cheery, 03:49 09-11-2004
Mira



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
подскажите как задать в патерн строке знак процента %
т.е. если надо проверить строку prosto%20probel
 
и вопрос по подчеркиванию(_) в пхп как его проверять?
 
 
спасибо.

Всего записей: 1627 | Зарегистр. 25-11-2003 | Отправлено: 11:05 15-11-2004
Infection

iB3 PostgreSQL Coder
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
на сайте есть только один файл - index.php
 
ссылки выглядят как
 
index.php?Country=141
index.php?Resort=523
index.php?Story=218
index.php?Narration=654
index.php?Agent=721
 
столкнулся с проблемой индексации поисковиками
то бишь надо сделать robots.txt и запретить ходить по некоторым урлам
 
то в robotos.txt строку запроса не пропишешь
чего делать?
 
сперва подумал о двойном реврайте, к примеру запрашиваем
index.php?Country=141
потом переделываем в /Country/141
и потом снова реврайтим в index.php?Country=141
 
но для поисковика же этот реврайт не заметен... он запросит урл index.php?Country=141
 и его же и получит...
 
как быть?
ссылки переделывать на всем сайте довольно проблематично, то есть везде во всех ссылках заменить ссылки на формат /Country/141, а потом общаком реврайтить в index.php?Country=141
 
есть варианты решения?
 
мод реврайт может отдавать браузеру код, что по документу идет редирект
 
то бишь
запрашивается урл index.php?Country=141
а модревайт отвечает что урл редиректится на /Country/141, то есть чтобы поисковый боту расценивал реврайт как редирект

Всего записей: 352 | Зарегистр. 21-12-2001 | Отправлено: 22:48 16-11-2004
Infection

iB3 PostgreSQL Coder
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
вроде в модреврайте есть то что мне нужно
 
    RewriteCond %{QUERY_STRING} ^Country=([0-9]+)$
    RewriteRule ^index.php$     http://192.168.0.2/country/%1   [R]
 
    RewriteCond %{REQUEST_URI} ^/country/([0-9]+)$
    RewriteRule ^country/([0-9]+)       http://192.168.0.2/index.php?Country=$1 [last]
 
 
то есть робот обращается к урлу index.php?Country=11 и первое правило его редиректит на http://192.168.0.2/country/11
 
далее опять "новый урл" проходит цепочку и попадает по второе правило
то есть обратное преобразование, которое глазу не заметно.
 
только два вопроса:
[per-dir /var/www/] redirect to http://192.168.0.2/country/69?Country=69 [REDIRECT/302]
 
почему редиректится на http://192.168.0.2/country/69?Country=69
то бишь от куда берется %{QUERY_STRING}? Мне он нафиг не нужен
 
и второе, почему у меня все это дело в цикл заворачивается? Во втором же правиле ясно сказано, что LAST?

Всего записей: 352 | Зарегистр. 21-12-2001 | Отправлено: 23:00 17-11-2004
xntx



хнотик-багоискатель
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Infection

Цитата:
то в robotos.txt строку запроса не пропишешь  
чего делать?  

http://forum.ru-board.com/robots.txt
тут прописана строка запроса, и роботы не индексируют это
это так, немного оффтоп

----------
Hello world!

Всего записей: 5169 | Зарегистр. 15-02-2003 | Отправлено: 23:14 17-11-2004
Infection

iB3 PostgreSQL Coder
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
xntx, не знаю как там, но мой mnogosearch не понимает такие записи
 
User-agent: *
Disallow: /index.php?act=agents
Disallow: /index.php?Review
Disallow: /index.php?act=reviews
Disallow: /index.php?Country
Disallow: /index.php?act=countries
Disallow: /index.php?Resort
Disallow: /index.php?act=resorts
Disallow: /index.php?Narration
Disallow: /index.php?act=narrations
Disallow: /index.php?act=tours
 
и на сколько я помню, в robots.txt указываются папки и отдельные файлы, но не как названия файлов с их аргументами

Всего записей: 352 | Зарегистр. 21-12-2001 | Отправлено: 00:00 18-11-2004
xntx



хнотик-багоискатель
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Infection
ну не знаю...
http://www.searchengineworld.com/cgi-bin/robotcheck.cgi
ничего не говорит, да и поисковики не индексят варезник...

----------
Hello world!

Всего записей: 5169 | Зарегистр. 15-02-2003 | Отправлено: 01:27 18-11-2004
Infection

iB3 PostgreSQL Coder
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
чтобы работало 'env|E=VAR:VAL'
 
надо чго-то прописывать? а то я у меня не работает. Переменная всегда пустой оказывается.
вопрос http://forum.ru-board.com/topic.cgi?forum=8&topic=1544&start=80#15 остается не решенным

Всего записей: 352 | Зарегистр. 21-12-2001 | Отправлено: 11:49 19-11-2004
sghi



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть ссылка вроде http://sitename.ru/core.php?src=t&page=name1/name2/page_&n=1
А хочется чтобы было http://sitename.ru/core/src_t/name1/name2/page_1
 
В .htaccess пишу:
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^(.*)core/src_t/(.*)$ $1/core.php?src=t&page=$2
RewriteRule ^(.*)_(.*)$ $1_&n=$2
 
В итоге работает только http://sitename.ru/core/src_t/name1/name2/page_&n=1
А с заменой "_&n=" на просто "_" не получается. Где я ошибся или не дописал что-то? Помоему я с (.*) напутал.

Всего записей: 2026 | Зарегистр. 02-03-2003 | Отправлено: 13:27 08-12-2004 | Исправлено: sghi, 13:29 08-12-2004
sghi



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Мда... Кажется причина найдена, но от этого не легче: мой Apache 1.3 вроде игнорирует символы "&" и "=" при замене "_&n=" на просто "_". Получается что Apache меняет "_n" на "_", чего мне совсем не нужно -- мало ли где сочетание "_n" встречается.
Что можно сделать в этом случае?

Всего записей: 2026 | Зарегистр. 02-03-2003 | Отправлено: 15:52 09-12-2004
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Apache+mod_rewrite


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru