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

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

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

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

   

SplideX



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
У меня вопрос ко всем. Как при помощи mod_rewrite сделать так чтобы ссылка типа http://host/index.php?param=view была как http://host/view/ ?
 
 
 


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

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

Всего записей: 1725 | Зарегистр. 15-01-2002 | Отправлено: 13:57 13-06-2003 | Исправлено: lynx, 05:50 24-06-2003
batva



crazy administrator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Зачем тебе слеш в конце?
А если его не будет, должно ведь тоже пахать?!
 
 
В часности:
 
RewriteRule           ^/view(/?)$                        /index.php?param=view[L]
 
 
А в  общем так:
 
RewriteRule           ^/(.*)$                              /index.php?param=$1[L]
 
Добавлено
А вообще такие вопросы лучше сюда >>>

Всего записей: 12593 | Зарегистр. 07-01-2001 | Отправлено: 14:19 13-06-2003
SplideX



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

Цитата:
А в  общем так:  
 
RewriteRule           ^/(.*)$                              /index.php?param=$1[L]  

 
только я сам так делал, но не работает.
пишу  
http://test/view - 404
http://test//view - норма
с двумя и более слэшами работает, с одним не хочет.
не пойму почему.


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

Всего записей: 1725 | Зарегистр. 15-01-2002 | Отправлено: 15:26 13-06-2003
alexhemp



упал с пальмы
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
SplideX
Попробуй убрать первый слеш.
 
У меня вот так примерно сделано... Это самый простое RewriteRule

Код:
RewriteRule ^news/([0-9]+)[/]? news.php?id=$1              [L,NC,NS]

Всего записей: 1945 | Зарегистр. 13-12-2001 | Отправлено: 17:14 13-06-2003
ASteel



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

Цитата:
 
RewriteRule           ^/(.*)$                              /index.php?param=$1[L]  
 

 
а хост определяется как "http://www.test.test/"
с финальным слешем.
А ты пытаешься его к файлу спереди прицепить.
т.е.
 

Код:
 
RewriteRule           ^(.*)$                              /index.php?param=$1[L]  
 

 
а слеш, в принципе, можно и в скрипте отрезать.


----------
С сегодняшнего дня прошу считать меня растаможенным (C) Splin

Всего записей: 310 | Зарегистр. 29-01-2002 | Отправлено: 17:32 13-06-2003
SplideX



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ASteel
У меня апач на это вешается :)

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

Всего записей: 1725 | Зарегистр. 15-01-2002 | Отправлено: 21:14 13-06-2003
ASteel



Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
SplideX
Млин. Забыл ;( Сорри.
Естественно.
 
Надо выходить из положения так (по крайней мере я так вышел):

Код:
 
RewriteRule           ^index\.php(.*)$               -  [L]
RewriteRule           ^(.*)$                              /index.php?param=$1 [L]
 

 
Так как Rewrite запускает внутренний редирект, и переходит на index.php?... а чем index.php не подходит под правило ^(.*)$ , а?


----------
С сегодняшнего дня прошу считать меня растаможенным (C) Splin

Всего записей: 310 | Зарегистр. 29-01-2002 | Отправлено: 22:16 13-06-2003 | Исправлено: ASteel, 22:22 13-06-2003
L0Ve



s@nya.moder
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ASteel

Цитата:
а чем index.php не подходит под правило ^(.*)$

тем, что  [L]

----------
In God we trust. Everyone else we are verifying with PGP.

Всего записей: 1365 | Зарегистр. 28-07-2001 | Отправлено: 03:46 14-06-2003
SplideX



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
ASteel
Так работает. Только не отображаются внутренние ссылки на картинки и css. В общем картинок и форматирования нету.

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

Всего записей: 1725 | Зарегистр. 15-01-2002 | Отправлено: 16:43 14-06-2003
woffer

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Наверное, сюда -)  
1.У меня есть правило вида

Код:
RewriteRule ^news/([0-9]+)[/]?$ news.php?id=$1

применительно к числу все прекрасно работает. А как быть если формат заранее неизвестен, то есть что-то вроде этого:

Код:
RewriteRule ^news/(.*)[/]?$ news.php?id=$1

При использовании этого правила получаю:
news/123  - news.php?id=123
news/123/ - news.php?id=123/
Как в этом случае корректно отработать слэш ?
 
2. Что лучше (и вообще велика ли разница ), в том случае если я размещаю .htaccess в корневом каталоге и в не в корневом. То есть, что лучше и почему:
http://localhost/.htaccess на все подкаталоги
http://localhost/1/.htaccess, http://localhost/2/.htaccess каждому каталогу свой .htaccess
Подозреваю, что лучше с точки зрения производительности второе, так ли это ?  
 
ps 2 пункт применительно к rewrite

Всего записей: 935 | Зарегистр. 11-10-2002 | Отправлено: 22:42 07-09-2003 | Исправлено: woffer, 22:45 07-09-2003
Cheery



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

Цитата:
Подозреваю, что лучше с точки зрения производительности второе, так ли это ?  

Не важно.. апач все папки сверху вниз просматривает на наличие htaccess

Цитата:
Как в этом случае корректно отработать слэш ?  

самим скриптом..

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:56 07-09-2003
woffer

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

Цитата:
Не важно.. апач все папки сверху вниз просматривает на наличие htaccess  

Это да. Не о том я -) Я о том, что если к корень положить, то будут проверяться каждый раз много условий для подкаталогов (много лишний проверок, которых не будет, в случае закидывая htaccess в каждый подкаталог)

Цитата:
самим скриптом..

Эх -)
 

Всего записей: 935 | Зарегистр. 11-10-2002 | Отправлено: 23:29 07-09-2003
Cheery



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

Цитата:
Это да. Не о том я -) Я о том, что если к корень положить, то будут проверяться каждый раз много условий для подкаталогов (много лишний проверок, которых не будет, в случае закидывая htaccess в каждый подкаталог)  

Ну дык это зависит от содержимого

Цитата:
Эх -)  

Наверно можно и rewrite.. Но для этого нужен хоть какой нить вид переменной..
например, если число, то проверять, что параметр является числом..
вот так.. [0-9]

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

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 23:35 07-09-2003
woffer

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

Цитата:
Ну дык это зависит от содержимого  

Да, конечно  
Любопытно на эмпирическую информацию посмотреть -)

Цитата:
Наверно можно и rewrite.. Но для этого нужен хоть какой нить вид переменной..  
например, если число, то проверять, что параметр является числом..  
вот так.. [0-9]

Угу, для числа так и сделано, весь интерес был, как сделать rewrite, если вид неизвестен
Спасибо.

Всего записей: 935 | Зарегистр. 11-10-2002 | Отправлено: 23:37 07-09-2003 | Исправлено: woffer, 23:40 07-09-2003
Kaa_g



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Помогите плиз у меня путь к картинкам такой /images/gh.gif а сам файл лежит в папке /news/news.php при этом я использую правило
RewriteRule ^news/news([0-9]+)\.htm$ /news/news.php?CuurPage=$1  [L]  
все работает я попадаю на страницу /news/news9.htm то есть все работает нормально но при этом в логах пишут такое  
 
127.0.0.1 - - [10/Sep/2003:17:14:56 -0700] [127.0.0.1/sid#795a08][rid#87a048/initial] (2) [per-dir e:/server/htdocs/] rewrite news/2/69news.htm -> /news/news.php?CuurPage=2&id=69
127.0.0.1 - - [10/Sep/2003:17:14:56 -0700] [127.0.0.1/sid#795a08][rid#87a048/initial] (1) [per-dir e:/server/htdocs/] internal redirect with /news/news.php [INTERNAL REDIRECT]
127.0.0.1 - - [10/Sep/2003:17:14:56 -0700] [127.0.0.1/sid#795a08][rid#880440/initial/redir#1] (1) [per-dir e:/server/htdocs/] pass through e:/server/htdocs/news/news.php
 
А дальше он начинает на это правило проверять все ссылки на графыческие файлы  
 
127.0.0.1 - - [10/Sep/2003:17:14:56 -0700] [127.0.0.1/sid#795a08][rid#42a0040/initial] (1) [per-dir e:/server/htdocs/] pass through e:/server/htdocs/bioinfo.css
127.0.0.1 - - [10/Sep/2003:17:14:56 -0700] [127.0.0.1/sid#795a08][rid#42a0040/initial] (1) [per-dir e:/server/htdocs/] pass through e:/server/htdocs/news/2
127.0.0.1 - - [10/Sep/2003:17:14:56 -0700] [127.0.0.1/sid#795a08][rid#42a0040/initial] (1) [per-dir e:/server/htdocs/] pass through e:/server/htdocs/images/1_1.jpg
127.0.0.1 - - [10/Sep/2003:17:14:56 -0700] [127.0.0.1/sid#795a08][rid#42a0040/initial] (1) [per-dir e:/server/htdocs/] pass through e:/server/htdocs/images/1_3.jpg[q]
 
и так все ссылки внутри самого документа
 
Из этого вопрос нормально ли это или нужно с помощью RewriteCond как-то этим управлять если да то подскажите как это сделать

Всего записей: 63 | Зарегистр. 29-04-2003 | Отправлено: 18:14 10-09-2003
Nazarius



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Хочу возобновить тему )
У меня чей-то не получается с mod_rewrit"ом.
Когда пишу
RewriteRule    ^index\.html$  index.php  [R]
то при заходе на  
http://localhost/new/index.html
оно переходит на адрес:
http://localhost/d:/www/new/index.php
 
И вообще - вот мой хтаккес - скажите что не правильно:
 
Options       ExecCGI FollowSymLinks Includes MultiViews
RewriteEngine  on
RewriteBase   /new/
RewriteRule    ^index\.html$  index.php  [R]

Всего записей: 107 | Зарегистр. 04-06-2003 | Отправлено: 12:53 08-10-2003
Kaa_g



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Попоробуй поставить так
RewriteRule    ^index\.html$  /index.php  [R]
или
RewriteRule    ^index\.html$  /new/index.php  [R]
 
по идие первый вариант должен работать хотя у меня с RewriteBase как-то не сложилось.  

Всего записей: 63 | Зарегистр. 29-04-2003 | Отправлено: 14:29 08-10-2003
Nazarius



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Kaa_g
Пасиба! Все получилось.
Но возникли новые проблемы.
Например, как обрабатывать внутренние ссылки?
Я пишу
RewriteRule     ^service/(.+)$            /article.php?cat=service#$1 [L]
то есть хочецца, чтобы юзер писал http://.../service/book
а получал /article.php?cat=service#book
в артыкле есть ссылка <a name="book">
Так вот, артыкле то оно открывает, но по внутренней ссылке не идет
Что мне делать?

Всего записей: 107 | Зарегистр. 04-06-2003 | Отправлено: 11:10 21-10-2003
SplideX



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
А как сделать редирект на поддомен?  
Например набилаю www.lalalala.com а оно берет документы с new.lalalala.com ?

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

Всего записей: 1725 | Зарегистр. 15-01-2002 | Отправлено: 14:39 14-12-2003
LaSet



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
помогите пожалуйста с:
 
http://url/index.php?action=view&view=category&catid=31&catflag=4&sublevel=2
 
 в  http://url/31/4/2
 
 
http://url/index.php?&action=view&view=category&catid=31&catflag=4&sublevel=2&start=10
 
 в  http://url/31/4/2/10.html
 
 
http://url/index.php?action=view&view=entry&entryid=478
 
 в  http://url/478.html
 
Спасибо!




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

Всего записей: 8 | Зарегистр. 05-10-2003 | Отправлено: 06:54 11-01-2004 | Исправлено: lynx, 00:36 12-01-2004
   

Страницы: 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-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru