Ru-Board.club
← Вернуться в раздел «Web-программирование»

» mod_rewrite: документация, готовые решения, вопросы

Автор: Ludovick
Дата сообщения: 14.10.2006 01:28
Доброй ночи,

помогите плиз разрулить парковку доменов. в панели управления этими доменами записи сделал, в управлении хостингом домены запарковал.


htaccess выглядит вот так:


DirectoryIndex index.php

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*) index.php

RewriteCond %{HTTP_HOST} ^(www\.)?name1\.com$ [NC]
RewriteRule ^$ /index.php [QSA,L]

RewriteCond %{HTTP_HOST} ^(www\.)?name2\.com$ [NC]
RewriteRule ^$ /index.php [QSA,L]



нужно чтобы name1.com, name2.com приходили в корень моего хостинга
Но по-прежнему ни фига не работает...
потому что ни бельмеса в этом не понимаю.
Автор: Cheery
Дата сообщения: 14.10.2006 01:41
Ludovick

Цитата:
потому что ни бельмеса в этом не понимаю.

потому что читать мануалы сначала нужно..


Цитата:
RewriteCond %{HTTP_HOST} ^(www\.)?name1\.com$ [NC]
RewriteRule ^$ /index.php [QSA,L]

RewriteCond %{HTTP_HOST} ^(www\.)?name2\.com$ [NC]
RewriteRule ^$ /index.php [QSA,L]

какой смысл? да и вообще, что тебе мешает просто переадресацию прямиков через redirect??
если нет доступа к httpd.conf, то в папке, на которую указывают другие домены, создается htaccess с
Redirect / http://www.domain.ru
Автор: Ludovick
Дата сообщения: 15.10.2006 18:00
я решил вопрос с помощью файла index.html - простой редирект на index.php в этой же папке. и DirectoryIndex прописал index.html. домены сразу заработали.
Автор: Cheery
Дата сообщения: 15.10.2006 18:22
Ludovick

Цитата:
я решил вопрос с помощью файла index.html - простой редирект на index.php в этой же папке. и DirectoryIndex прописал index.html. домены сразу заработали.

работать не будет, если запросят какую нить другую страницу, кроме корневой
Автор: CoolKonig
Дата сообщения: 23.10.2006 09:24
Подскажите как написать правило для ссылок:
http://domain.com/category.php?number=4
http://domain.com/subcategory.php?number=2
такого вида:
http://domain.com/category/4
http://domain.com/subcategory/2

Я вот так вот делаю:
RewriteRule ^([a-z]+)/([0-9]*)/$ ?number=$1

Но не работает почему-то...
Автор: phpbbmods
Дата сообщения: 23.10.2006 10:03
CoolKonig
RewriteRule ^([a-z]+)/([0-9]*)/$ /subcategory.php?number=$1
так
http://domain.com/category/4/
а так
RewriteRule ^([a-z]+)/([0-9]*)$ /subcategory.php?number=$1
Автор: CoolKonig
Дата сообщения: 23.10.2006 10:30

Цитата:
RewriteRule ^([a-z]+)/([0-9]*)/$  /subcategory.php?number=$1   так http://domain.com/category/4/ а так   RewriteRule ^([a-z]+)/([0-9]*)$ /subcategory.php?number=$1

что-то по прежнему не работает. Хотя сам mod_rewrite другие правила обрабатывает... кстати вот с таким правилом работает:
RewriteRule ^([0-9]*)\.html$ /subcategory.php?number=$1
тогда допустим ссылка вида domain.com/2.html все нормально открывает... В логах ничего не пишет =\
Автор: phpbbmods
Дата сообщения: 24.10.2006 19:17
CoolKonig
у меня так работает на ура

Код:
RewriteEngine On
Options +FollowSymlinks
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/$ /www.php?url=$1 [L,QSA]
RewriteRule ^(.*)/([0-9]+).html$ /www.php?url=$1&page=$2 [L,QSA]
Автор: vitovt
Дата сообщения: 25.10.2006 10:33

Цитата:
какой смысл? да и вообще, что тебе мешает просто переадресацию прямиков через redirect??
если нет доступа к httpd.conf, то в папке, на которую указывают другие домены, создается htaccess с
Redirect / http://www.domain.ru


а у меня вот такая проблема, просто у домена есть алиасы и нужно чтоб каждому алиасу соответствовал свой Rule потому как и поддомены у меня подчинаються главному .htaccess
Автор: SplideX
Дата сообщения: 31.10.2006 16:10
Подскажите как сделать такой финт.
Я хочу сайт положить в папку /htdocs/site/
чтобы не захламлять корень.
Как это сделать грамотно? Чтобы не затрагивать поддомены и т.п.?
Т.е. когда обращаешься к www.site.com или просто site.com, то файлы берутся из директории /htdocs/site/, а не /htdocs/
Автор: abarat
Дата сообщения: 03.11.2006 14:19
Пишу правило для ссылок:
http://site.com/index.php?m=10&y=2006
http://site.com/calendar.php?date=2006-11-18

такого вида:
http://site.com/calendar/10-2006
http://site.com/calendar/2006-11-11

пишу так:
RewriteRule ^(.*)calendar/([0-9]{1,2})-([0-9]{4})$ $1?m=$2&y=$3
RewriteRule ^(.*)calendar/([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})$ $1calendar.php?date=$2-$3-$4

На локальном серваке (Апач под ВинХР) все работает, а на серваке провайдера не хочет. При этом http://site.com/index.php?tab=teatr -> http://site.com/teatr/ работает

RewriteRule ^(.*)teatr/$ $1index.php?tab=teatr

в чем проблема?
Автор: dacuan
Дата сообщения: 04.11.2006 12:36
abarat

Попробуй так:

Код:
RewriteRule ^(.*)calendar/([0-9]{1,2})-([0-9]{4})$ $1index.php?m=$2&y=$3
RewriteRule ^(.*)calendar/([0-9]{4})-([0-9]{1,2})-([0-9]{1,2})$ $1calendar.php?date=$2-$3-$4
Автор: batton
Дата сообщения: 05.11.2006 16:18
Прошу помощи.
Мне нужно чтобы по ссылке mysite.ru/lib пользователя перенаправляло на mysite.ru/index.pl?box=lib
/lib - директория в которой есть поддиректории с файлами. они должны открыватся

пишу .htaccess в директории lib
RewriteRule ^/$ /index.pl?box=lib [R]

в результате - forbidden. в логах написано что якобы не включен FollowSymLinks, однако в htaccess он включен
сейчас, временно, реализовал через html-страницу которая назначена как индексная для данной директории
Автор: Brodyaga
Дата сообщения: 05.11.2006 16:24
Писать нужно в корневой директории
RewriteRule /lib/ index.pl?box=lib
Автор: CoolKonig
Дата сообщения: 12.11.2006 12:57
Не могу привести ссылку вида:

Код: http://domain.com/ru/office/file.php?edit=file.txt
Автор: Kolderon
Дата сообщения: 12.11.2006 14:19
CoolKonig

Код: RewriteRule /ru/office/([0-9A-Za-z]{3,30}\.php.*)$ /office/$1&language=ru
Автор: CoolKonig
Дата сообщения: 12.11.2006 18:02
Kolderon

Цитата:

Код:
RewriteRule /([A-Za-z][A-Za-z])/office/([0-9A-Za-z]{3,30}\.php.*)$ /office/$2&language=$1

Честно говоря, ваша конструкция ([0-9A-Za-z]{3,30})\.php несколько странная. Но если вам так нужно...

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

Код: http://domain.com/office/file.php&language=ru?edit=file.txt
Автор: Kolderon
Дата сообщения: 12.11.2006 20:50
CoolKonig
Все куда интересней. Во-первых:

Цитата:
RewriteRule "исходный путь" "замена" "флаги"
Исходный путь - это часть исходной ссылки, от которой отрезаны имя сервера, путь до текущего каталога и параметры запроса.

Во-вторых:

Цитата:
Флаг QSA (qsappend) добавляет исходные параметры запроса (query string) к замене. Если замена не включает в себя новые параметры запроса, то исходные параметры запроса добавляются автоматически. Если же включает, то без флага QSA исходные параметры запроса будут утеряны.

Поэтому, тебе следует писать правило так:

Код: RewriteRule ^([A-Za-z][A-Za-z])/office/([0-9A-Za-z]{3,30}\.php)$ office/$2?%{QUERY_STRING}&language=$1
Автор: CoolKonig
Дата сообщения: 12.11.2006 21:10
Kolderon спасибо большое. Вроде понял все, ну почти все
Автор: Vasya Pupkin
Дата сообщения: 14.11.2006 13:06
Уважаемые, а возможно как-нибудь сделать редирект с сохранением первоначального урла в строке браузера? Видел такие примеры и думаю, что это было сделано с помощью модреврайта.
Автор: batton
Дата сообщения: 22.11.2006 18:22
Подскажите пожалуйста.
Есть два домена на разных серверах у разных хостеров. Необходимо чтобы при запросе файла на Домене1 пользователю выдавался файл физически находящийся на Домене2.
Где то я такое решение встречал, но найти не могу
p.s.: мера временная. на домене1 закончились дисковые квоты
Автор: Cheery
Дата сообщения: 22.11.2006 18:37
batton
http://httpd.apache.org/docs/1.3/mod/mod_alias.html#redirect
Автор: batton
Дата сообщения: 22.11.2006 19:48
виноват, не совсем корректно объяснил. мне нужно делать не просто редирект. мне нужно чтобы это было непрозрачно для пользователя. то есть в адресной строке - адрес домена1
Автор: Cheery
Дата сообщения: 22.11.2006 19:51
batton

Цитата:
виноват, не совсем корректно объяснил. мне нужно делать не просто редирект. мне нужно чтобы это было непрозрачно для пользователя. то есть в адресной строке - адрес домена1

и сервера у разных хостеров? только mod_proxy + настройки.
реврайтом "незаметно" для пользователя это не сделать.
Автор: batton
Дата сообщения: 22.11.2006 19:59
что-то типа
RewriteRule ^foo\.html$ http://domen2/bar.html
но кажется мне что все не так просто
Автор: Cheery
Дата сообщения: 22.11.2006 20:05
batton

Цитата:
но кажется мне что все не так просто

Пробуй..

Цитата:
RewriteRule ^/somepath(.*) http://otherhost/otherpath$1 [P]

но я неуверен, что без mod_proxy будет работать.. хотя кто знает.
Автор: batton
Дата сообщения: 22.11.2006 20:14
а такой вариант?


Цитата:

RewriteEngine on
RewriteBase /~quux/
RewriteRule ^hotsheet/(.*)$ http://www.tstimpreso.com/hotsheet/$1 [P]


взято отсюда http://www.egoroff.spb.ru/portfolio/apache/rewriteguide.html
Автор: Cheery
Дата сообщения: 22.11.2006 20:16
batton

Цитата:
а такой вариант?

а может просто сам попробуешь??
Автор: batton
Дата сообщения: 22.11.2006 20:16
p.s.: не увидел ваш совет

Добавлено:
Forbidden

Цитата:

Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden

.htaccess лежит непосредственно в директории запрос из которой надо пернаправлять на другой сервер

Цитата:

RewriteRule ^/(.*)$ http://domain2/lib/bookshelf/corolla/$1 [P]
Автор: Cheery
Дата сообщения: 22.11.2006 21:42
batton

Цитата:
Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden

ответ.. дан.. расшифровать?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445

Предыдущая тема: PHP: Регулярные выражения (RegExp, Regular, eregi, preg)


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.