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

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

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

dg (06-03-2005 12:11): обсуждается в теме Apache+mod_rewrite
 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2

   

seva1

Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Народ у меня точно скрипт рабочий так как на хосте пашет, но на локалке не хочет как настроить аппач то? искал тут на руборде но именно про настройку не нашел!

Всего записей: 1153 | Зарегистр. 10-12-2003 | Отправлено: 18:21 04-04-2004
lynx



Advanced lynx
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
seva1

Цитата:
Народ у меня точно скрипт рабочий так как на хосте пашет, но на локалке не хочет как настроить аппач то? искал тут на руборде но именно про настройку не нашел!

 
Скажи, пожалуйста, а при чем тут замена ссылок с помощью mod_rewite?
 
Вот это читай:
 
Установка Apache 2.x, PHP4, PERL и MySQL на localhost под Windows
 
Добавлено
login: forum
pass: forum

Всего записей: 11712 | Зарегистр. 08-05-2001 | Отправлено: 18:25 04-04-2004
CTaJIuH



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Я совсем запутался с этим мод_реврайт. Кто-нибудь может человеческим языком объяснить возможно ли чтобы на сайте ВСЕ урл вида www.site.com/blabla.php?p=nazvanie
превращались в www.site.com/blabla/nazvanie/ ?

Всего записей: 232 | Зарегистр. 05-03-2003 | Отправлено: 16:55 07-08-2004 | Исправлено: CTaJIuH, 16:55 07-08-2004
SplideX



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
продолжение поста (http://forum.ru-board.com/topic.cgi?forum=8&bm=1&topic=7931#1).
 
в общем суть в том есть в корне файл .htaccess  
 

Код:
 
AddDefaultCharset windows-1251
Options +FollowSymlinks
Options -Indexes
RewriteEngine on
RewriteBase /
 
RewriteRule  ^(.*)$ /site/$1
 

 
суть в том, что корень сайта лежит в папке site, чтобы не загромождать место визуально на ftp. Но поддомены, которые лежат тоже в корне как и site, болезненно реагируют на последнюю строку. Т.е. ошибка 500. Почему? Как исправить грамотно? сайт из папки site переносить в корень не предлагать! надо более грамотный способ.
 
такая фишка как  

Код:
 
RewriteBase /  
RewriteCond %{REQUEST_URI} !^/site/  
RewriteRule  ^(.*)$ /site/$1  
 

 
тоже не катит, т.к. тогда скажем если набрать условно http://sub.domain.com, то закрос идёт к папке /site/sub/, которой нету. Папка sub находится на том же уровне что и site.

----------
О себе:
Маркетолог - Блог о Маркетинге, Продажах, Рекламе

Всего записей: 1725 | Зарегистр. 15-01-2002 | Отправлено: 09:33 21-09-2004 | Исправлено: SplideX, 09:35 21-09-2004
Cheery



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

Цитата:
тоже не катит, т.к.  

вернее еще лучше.. а почему бы не написать в httpd.conf для того домена, что хочешь, а не в htaccess? или укажи для какого домена хочешь оставить. и решается это всего лишь добавлением еще одного условия.
А еще лучше - сформулируй полностью задачу. Для каких доменов работать форвард должен, а для каких нет.

Цитата:
Т.е. ошибка 500. Почему?

я тебе объяснил, как узнать почему.. а еще проще
RewriteLog "/webserver/logs/rewrite.log"  
RewriteLogLevel 9  
тогда точно узнаешь почему.


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 09:36 21-09-2004 | Исправлено: Cheery, 09:41 21-09-2004
mitrofan



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Не работает mod_rewrite под apache 1, хотя под apache 2 все нормально.
 
Под apache 1 в настройках httpd.conf модуль включен:
LoadModule rewrite_module modules/ApacheModuleRewrite.dll
может еще что-нибудь надо прописать ?
Или выложите нормальные настройки httpd.conf под apache 1 сюда или на мыло sliderule(собак)mail.ru
 
В логах mod_rewrite вроде ошибок нет
 
Может надо дописать что-нибудь в .htacceess
 
файл .htacceess:
 
RewriteEngine On
RewriteBase /portfolio
RewriteRule portfolio/?$ index.php?p=portfolio
RewriteRule profile/?$ index.php?p=profile
RewriteRule contact/?$ index.php?p=contact
RewriteRule links/?$ index.php?p=links
RewriteRule portfolio/([0-9A-Za-z.]+)/?$ index.php?p=portfolio&ws=$1
RewriteRule portfolio/([0-9A-Za-z.]+)/([0-9]+)/?$ index.php?p=portfolio&ws=$1&v=$2
RewriteRule preview/([0-9A-Za-z./_-]+)?$ preview.php?s=$1
RewriteRule contact/send/?$ index.php?p=send
 
И еще меня удивило что под apache 1 надо дописывать слеш в конце, например http://localhost/portfolio/, то есть http://localhost/portfolio - не будет работать, а в apache2 все нормально ?
 
Вообщем такой трабл, заранее благодарю всех за помощь

Всего записей: 76 | Зарегистр. 28-11-2002 | Отправлено: 21:28 16-10-2004
H_e_r_m_i_t



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Имеется следующий вопрос: есть site.com/aaa/ , необходимо организовать что бы при запросе пользователем какого либо файла в site.com/aaa/ (и субдиректориях) без изменения адреса в адресной строке браузера выдавался запрашиваемый файл из  bbb.site.com/aaa/
 
В .htaccess'е вроде бы должно быть что-то такое:
 
RewriteCond %{HTTP_HOST} ^site.com/aaa/$ [NC]
RewriteRule (.*) bbb.site.com/aaa/%{REQUEST_URI} [P]
 
? Но такой вариант выдает 404-ую ошибку. Где порылась собака?

Всего записей: 950 | Зарегистр. 26-04-2002 | Отправлено: 01:01 25-10-2004
Cheery



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

Цитата:
? Но такой вариант выдает 404-ую ошибку. Где порылась собака?  

смотрим error_log
в RewriteRule насколько помню нет серверных переменных и тем более %{REQUEST_URI}
http://httpd.apache.org/docs/mod/mod_rewrite.html#RewriteRule

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 01:07 25-10-2004 | Исправлено: Cheery, 01:07 25-10-2004
Zapadlo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Не могу разобраться как просто заменить внутри ссылки кусок строки, который может находиться в любом ее месте, вроде бы пример простой, каталог игр для телефонов  
 
ссылка может выглядеть так  
http://site.ru/game0001  
а может так    
http://site.ru/phone01/game0001  
или так  
http://site.ru/phone01/genre1/page2  
то есть различные параметры могут нахоиться в разных местах илисовсем отсутствовать....  
Удобнее всего было бы просто пройтись и проверить на наличие всех параметров, то есть напримересли встретилось в строке  
/page2 преобразоать в &page=2 и пр, а все примеры с которыми приходилось сталкиваться приводятся на случаях когдакаждый параметр расположен фиксированно.....

Всего записей: 114 | Зарегистр. 12-05-2002 | Отправлено: 00:06 03-11-2004
Zapadlo



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Что, никто так и не поможет?
Мож непонятно объяснил, попробую понятнее
Как в ссылке просто заменить один кусок строки на другой, например string1 на string2?
Rewriterule ^(.*)string1(.*)$ $1srtring2$2 почему-то упорно не прокатывает

Всего записей: 114 | Зарегистр. 12-05-2002 | Отправлено: 14:08 03-11-2004
jason32



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
перенаправили сюда:
Проблема такая:попросили подправить старый готовый сайт.  
Были ссылки типа www/.../dir/?[число]-надо у клиента в браузере в строке адреса исправить на www/.../dir/[число] ,не трогая саму ссылку.Как это сделать через mod_rewrite?  
Плюс ещё какой-то непонятный trubl:не могу экранировать "?".  
Естественно,все запросы www/.../dir/[число] надо перевести в www/.../dir/?[число].  
Видимо,как-то надо через redirect,а как-не знаю.  
ПОМОГИТЕ НАЧИНАЮЩЕМУ НЕОПЫТНОМУ php-ПРОГРАММИСТУ.
lynx,ты скажи-это вообще возможно-разобрать входящий URL www/.../dir/?[число] ?

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



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

Цитата:
Видимо,как-то надо через redirect,а как-не знаю.  

не знаешь - читай мануалы и пробуй.
тут в разделе mod_rewrite
http://forum.ru-board.com/topic.cgi?forum=8&topic=3291#1
 

Цитата:
Были ссылки типа www/.../dir/?[число]-надо у клиента в браузере в строке адреса исправить на www/.../dir/[число] ,не трогая саму ссылку.Как это сделать через mod_rewrite?  
Плюс ещё какой-то непонятный trubl:не могу экранировать "?".  
Естественно,все запросы www/.../dir/[число] надо перевести в www/.../dir/?[число].

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


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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 03:30 09-11-2004
jason32



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Cheery,коротко говоря-проблема одна-как экранировать "?" и возможно ли это вообще.
У меня нехорошее предчувствие,что URL со знаком вопроса APACHE раскладывает самостоятельно на переменные до всяких модреврайтов.Жду подтверждения уважаемых людей.
Cheery,ОТВЕТЬ!!!.

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



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

Цитата:
Cheery,ОТВЕТЬ!!!.

не ори.. не глухие и не слепые..
как сделать - ответил в пред. топике.
RewriteCond %{QUERY_STRING}      ([0-9]+)
RewriteRule ^/dir/$        /dir/%1
 
зы: не проверял, но вроде так должно ..
зызы: и не уверен, что это решение, а не костыль
 
зызызы: да что ты говоришь, что экранирует.. щас напишу, как нужно
вернее после того, чтоже тебе нужно.. какой из двух вариантов.. так как в применении обоих сразу не вижу смысла.
 
а чтобы не было вопроса о разделении.. посмотрел бы rewrite.log
 
127.0.0.1 - - [08/Nov/2004:20:06:36 --0500] [localhost/sid#26bc90][rid#5a7890/initial] (2) rewrite /dir/4545345 -> /dir/?4545345
127.0.0.1 - - [08/Nov/2004:20:06:36 --0500] [localhost/sid#26bc90][rid#5a7890/initial] (3) split uri=/dir/?4545345 -> uri=/dir/, args=4545345

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

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



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
помогите разобраться:
 
# включаем раз
RewriteEngine On
# включаем два
Options +FollowSymlinks
# ???
RewriteCond %{REQUEST_FILENAME} !-f
# ???
RewriteCond %{REQUEST_FILENAME} !-d
#вроде как ищем REQUEST_FILENAME с чем-либо из (swf)|(jpg)|(png)|(gif)
RewriteCond %{REQUEST_FILENAME} !\.(swf)|(jpg)|(png)|(gif)$
#когда пишем /picture/ открываем по сути view.htm?uri=picture.jpg
RewriteRule ^(.+) view.htm?uri=$1 [L]
 
поправьте если не что так.

Всего записей: 473 | Зарегистр. 10-01-2004 | Отправлено: 02:00 12-01-2005
Advanced_Guest



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
# включаем раз  
RewriteEngine On  
# включаем два  
Options +FollowSymlinks  
# -f проверяет что файл, значок ! говорит что НЕТ  (то есть проверяет что запрос не файл)
RewriteCond %{REQUEST_FILENAME} !-f  
# тоже самое , но -d - папка (запрос не папка)
RewriteCond %{REQUEST_FILENAME} !-d  
#вроде как ищем REQUEST_FILENAME с чем-либо из (swf)|(jpg)|(png)|(gif)  
#наоборот, Проверяем чтобы в  REQUEST_FILENAME небыло этих swf jpg png gif ( | - или)
RewriteCond %{REQUEST_FILENAME} !\.(swf)|(jpg)|(png)|(gif)$  
#когда пишем /picture/ открываем по сути view.htm?uri=picture.jpg  
# нет, когда пишем /picture по идее должны открывать view.htm?uri=picture/ или view.htm?uri=picture
RewriteRule ^(.+) view.htm?uri=$1 [L]  


----------
The Abyss - UO, LA2, Ботва, BSFG

Всего записей: 2446 | Зарегистр. 14-04-2002 | Отправлено: 02:06 13-01-2005
chin one

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Совсем запутался с этим rewrite...
Проблема у меня такая:

Код:
RewriteRule   ^(.*)\.html(\?(.*))?  index.php?page=$1&$3

не уверен, что правильно, точнее, уверен, что неправильно
 
мне надо чтобы работало так:
mysite.com/Somepage.html -> index.php?page=Somepage
mysite.com/Somepage.html?else -> index.php?page=Somepage&else
 
проверял это выражение в php через ereg_replace - все работает... Почему-то апач не воспринимает вот это: \? а воспринимает его, как за черт знает что.
 
Тобишь, если я пишу:
mysite.com/Somepage.html?else
то все, что после "?" - не передается.
 
Просто, форма с action="Somepage.html" передает переменные вот таким вот образом:
Somepage.html?var1=value1&var2=value2
 
А после преобразования это все выглядит вот так вот (я предполагаю):
index.php?page=Somepage.html&?var1=value1&var2=value2
 
Помогите решить траблу...
 
И еще вопрос. Я не знаю, как в этом выражении сделать по другому:
^(.*)\.html(\?(.*))?
мне надо, чтобы эта группа была не обязательной (ну, чтобы не ругалось, если я наберу просто mysite.com/Somepage.html)... Как сделать? пробовал квадратные скобки - не работает.
 
Еще.... Я не ставил $ в конце. На сколько понятно - это окончание строки соответствия. Если этого символа нету - на сколько это страшно?

Всего записей: 12 | Зарегистр. 24-12-2004 | Отправлено: 03:57 16-01-2005 | Исправлено: chin one, 04:03 16-01-2005
morjov



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
chin one
если мне не изменяет мой склероз, то должно быть так:
Код:
 RewriteRule   ^(.*)\.html$ index.php?page=$1&%{QUERY_STRING}

 
Ключевое слово - %{QUERY_STRING}

Всего записей: 341 | Зарегистр. 05-01-2004 | Отправлено: 14:20 16-01-2005 | Исправлено: morjov, 14:21 16-01-2005
chin one

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Надеюсь, что %{QUERY_STRING} не включает в себя "?" Ща буду тестить, спасибо !
 
Добавлено:
Работает! Спасибо! Теперь, отталкиваясь от этого буду совершенствовать.
Должен принести извинения: пролистал только что форум вверх - увидел, что моя проблема была решена еще до того, как я ее запостил Cheery все понятно описал, а я, баран, не обратил внимание. Сори!

Всего записей: 12 | Зарегистр. 24-12-2004 | Отправлено: 16:28 16-01-2005
denis333

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите  
надо вот что  
есть  поддомен test.test.ru  
и есть папка test.ru/test
вот сейчас сайт доустпен и проиндексирован и так и так
но мне надо чтобы както через mod rewrite настроит чтобы кто зашел по старому адресу test.ru/test/ .... автоматически был на test.test.ru




строгое предупреждение за дубль

Всего записей: 4 | Зарегистр. 19-11-2004 | Отправлено: 22:28 04-03-2005 | Исправлено: dg, 12:03 05-03-2005
   

Страницы: 1 2

Компьютерный форум Ru.Board » Компьютеры » В помощь системному администратору » Apache + mod_rewrite: замена ссылок
dg (06-03-2005 12:11): обсуждается в теме Apache+mod_rewrite


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru