[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите с mod_rewrite
pavel
Подскажите как можно сделать следующее:

на ftp-сервере в папке /site лежит сайт
как с помощью mod_rewrite сделсть так, чтобы все запросы к домену www.domain.ru/строка_запроса адресовались не к корневой папке ftp сервера а к папке www.domain.ru/site/строка_запроса

парюсь... не пойму как сделать... bc.gif



Спустя 13 часов, 12 минут, 46 секунд (8.03.2007 - 12:12) vasa_c написал(а):
самое правильное - изменить в настройках сервера корневую папку сайта.

Спустя 33 минуты, 45 секунд (8.03.2007 - 12:45) pavel написал(а):
Цитата(vasa_c @ 8.3.2007, 12:12) [snapback]15359[/snapback]

самое правильное - изменить в настройках сервера корневую папку сайта.

Это понятно. Я не стал писать в вопросе, но в корневой папке FTP лежит еще один сайт. А хостер не позволяет на уровне контрольной панели все это разрулить. crying.gif
(2 домена завернуты в одно и то же место)

Спустя 9 часов, 5 минут, 28 секунд (8.03.2007 - 21:51) Patrick написал(а):
Треси хостера - это его хлеб!

Спустя 32 минуты, 18 секунд (8.03.2007 - 22:23) pavel написал(а):
Цитата(Patrick @ 8.3.2007, 21:51) [snapback]15387[/snapback]

Треси хостера - это его хлеб!

У хостера будет ответ простой - открывай еще один аккаунт smile.gif

А вообще вот такая вещь

PHP
  1. RewriteRule ^(.*)$ /site/$1 [L]


как я понимаю должна заворачивать все запросы с http://www.domain1.ru/file.htm на http://www.domain1.ru/site/file.htm

У кого нибудь это работает??? У меня выдает 500-ю ошибку. В чем ошибка?

Спустя 1 час, 56 минут, 58 секунд (9.03.2007 - 00:20) Leningrad00 написал(а):
Ошибка в том, что ты вводишь Apache в бесконечную цепь перенаправлений. Он это предполагал и имеет ограничение на количество перенаправлений, по достижении которого пишет в логи maximum number of internal redirects reached, а тебе показывает внутреннюю ошибку сервера.
Почему бесконечную? Потому, что в качестве target-файла указано динамическое понятие.
Что происходит: сервер получает запрос, смотрит на правило преобразования, применяет его и формирует новый запрос, смотрит на правило преобразования, новый запрос опять-таки преобразует, и так до тех пор, пока не достигнет максимально допустимого числа внутренних перенаправлений.
Напиши ты RewriteRule ^(.*)$ site/index.htm, все бы работало. Но тебе это не надо. Кстати, ставить слеш в начале target-адреса тоже не нужно.

Предлагается: в корень посадить скрипт, на который перенаправлять все запросы. Таким образом мы получим конечный и конкретный target-обработчик. В этом обработчике принимать REQUEST_URI и формировать перенаправление в нужную директорию и на нужный файл.

Спустя 10 часов, 22 минуты, 27 секунд (9.03.2007 - 10:43) pavel написал(а):
Цитата(Leningrad00 @ 9.3.2007, 0:20) [snapback]15389[/snapback]

Ошибка в том, что ты вводишь Apache в бесконечную цепь перенаправлений. Он это предполагал и имеет ограничение на количество перенаправлений, по достижении которого пишет в логи maximum number of internal redirects reached, а тебе показывает внутреннюю ошибку сервера.
Почему бесконечную? Потому, что в качестве target-файла указано динамическое понятие.
Что происходит: сервер получает запрос, смотрит на правило преобразования, применяет его и формирует новый запрос, смотрит на правило преобразования, новый запрос опять-таки преобразует, и так до тех пор, пока не достигнет максимально допустимого числа внутренних перенаправлений.
Напиши ты RewriteRule ^(.*)$ site/index.htm, все бы работало. Но тебе это не надо. Кстати, ставить слеш в начале target-адреса тоже не нужно.

Предлагается: в корень посадить скрипт, на который перенаправлять все запросы. Таким образом мы получим конечный и конкретный target-обработчик. В этом обработчике принимать REQUEST_URI и формировать перенаправление в нужную директорию и на нужный файл.


Спасибо за такой полный ответ. Остается непонятной только одна вещь.
В .htaccess нельзя использовать динамические понятия одновременно в 1-ом и 2-ом понятии RewriteRule. Я правильно понимаю?

Спустя 5 часов, 22 минуты, 57 секунд (9.03.2007 - 16:05) Leningrad00 написал(а):
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/*site/*(.*)$
RewriteRule ^(.*)$ site/$1


Смысл: применяй правило преобразования ко всем ссылкам, кроме ссылок вида /*site/*(.*).
Как работает: преобразование происходит один раз, ссылка становится вида /*site/*(.*), и к ней преобразование больше не применяется.

Спустя 5 часов, 9 минут, 22 секунды (9.03.2007 - 21:15) pavel написал(а):
Цитата(Leningrad00 @ 9.3.2007, 16:05) [snapback]15463[/snapback]

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/*site/*(.*)$
RewriteRule ^(.*)$ site/$1


Смысл: применяй правило преобразования ко всем ссылкам, кроме ссылок вида /*site/*(.*).
Как работает: преобразование происходит один раз, ссылка становится вида /*site/*(.*), и к ней преобразование больше не применяется.


Большое спасибо. Respect. Как хорошо, что остались еще люди, которым не трудно 2-3 предложения по теме написать!!! acute.gif

Спустя 3 месяца, 7 дней, 21 час, 54 минуты, 45 секунд (17.06.2007 - 18:10) php_maestro написал(а):
Нарисовалась проблемка, связанная с модулем mod_rewrite, сервера Apache. Скорее, не с самим модулем, а правилами перезаписи URL.

В корешке сайта (форум) лежит вот такой файл ".htaccess":

Код
# ------------------------------------------------------------------------------
#
# Основные настройки
#
# ------------------------------------------------------------------------------

DirectoryIndex index_file.php


Options -Indexes


ErrorDocument 500 ?1=error&2=500
ErrorDocument 404 ?1=error&2=404
ErrorDocument 403 ?1=error&2=403
ErrorDocument 402 ?1=error&2=402
ErrorDocument 401 ?1=error&2=401
ErrorDocument 400 ?1=error&2=400




# ------------------------------------------------------------------------------
#
# mod_rewrite
#
# ------------------------------------------------------------------------------

RewriteEngine On


RewriteBase /


RewriteRule ^/*([A-z0-9_\-]+)/*$ ?%{QUERY_STRING}&1=$1 [skip=8]
RewriteRule ^/*([A-z0-9_\-]+)/+([A-z0-9_\-]+)/*$ ?%{QUERY_STRING}&1=$1&2=$2 [skip=7]
RewriteRule ^/*([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/*$ ?%{QUERY_STRING}&1=$1&2=$2&3=$3 [skip=6]
RewriteRule ^/*([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/*$ ?%{QUERY_STRING}&1=$1&2=$2&3=$3&4=$4 [skip=5]
RewriteRule ^/*([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/*$ ?%{QUERY_STRING}&1=$1&2=$2&3=$3&4=$4&5=$5 [skip=4]
RewriteRule ^/*([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/*$ ?%{QUERY_STRING}&1=$1&2=$2&3=$3&4=$4&5=$5&6=$6 [skip=3]
RewriteRule ^/*([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/*$ ?%{QUERY_STRING}&1=$1&2=$2&3=$3&4=$4&5=$5&6=$6&7=$7 [skip=2]
RewriteRule ^/*([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/*$ ?%{QUERY_STRING}&1=$1&2=$2&3=$3&4=$4&5=$5&6=$6&7=$7&8=$8 [skip=1]
RewriteRule ^/*([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/+([A-z0-9_\-]+)/*$ ?%{QUERY_STRING}&1=$1&2=$2&3=$3&4=$4&5=$5&6=$6&7=$7&8=$8&9=$9


Эти правила в файле позволяют переделывать URL в очень удобную иерархию путей.

Например, набранные в браузере URL перезаписываются вот так:

http://site.ru/userinfo/7856 - http://site.ru/?1=userinfo&2=7856
http://site.ru/razdel/11/tema/39/printvers...es=0&back=1 - http://site.ru/?images=0&back=1&1=...3=tema&4=39

Появилась необходимость перенести все файлы форума в подкаталог корневой папки. В корне должен теперь находится информационный сайт, не имеющий никакого отношения к движку форума и имеющий свои правила перезаписи URL в своем .htaccess в корешке. А в каталоге http://site.ru/forum/ нужно разместить форум со своим .htaccess. Так вот, как сделать так, что бы система перезаписи URL для форума осталась, и адреса уже перезаписывались так:

http://site.ru/forum/userinfo/7856 - http://site.ru/forum/?1=userinfo&2=7856
http://site.ru/forum/razdel/11/tema/39/pri...es=0&back=1 - http://site.ru/forum/?images=0&back=1&...3=tema&4=39

Желательно .htaccess, который в корешке - не трогать.

Спустя 8 дней, 3 часа, 56 минут, 32 секунды (25.06.2007 - 22:06) php_maestro написал(а):
Я вижу, что на форуме нет РНР программистов, тем более не видно тех, кто знает, что такое mod_rewrite ...

Спустя 20 минут, 41 секунда (25.06.2007 - 22:27) welder написал(а):
Цитата
Я вижу, что на форуме нет РНР программистов, тем более не видно тех, кто знает, что такое mod_rewrite ...


я вот тоже думаю спросить людей в этой ветке ОТВЕТОВ кто какие трусы носит

Спустя 7 минут, 21 секунда (25.06.2007 - 22:34) php_maestro написал(а):
Мож я какие-то трудные вопросы задаю, раз тихо так ? ...

Спустя 11 часов, 27 минут, 30 секунд (26.06.2007 - 10:02) vasa_c написал(а):
Да, очень трудные вопросы.
Видимо тебе больше нечего делать на этом убогом форуме.

Спустя 33 минуты, 2 секунды (26.06.2007 - 10:35) md5 написал(а):
php_maestro, ты задаешь слишком много вопросов smile.gif

Спустя 9 часов, 11 минут, 4 секунды (26.06.2007 - 19:46) php_maestro написал(а):
Мне не верится, что никто не может помочь с проблемой mod_rewrite. Себя лучше похвалите за свои знания, чем меня критиковать.


_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.