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

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

Автор: DrakonSoft
Дата сообщения: 20.06.2009 22:29
то Cheery
.htaccess один, в корне документ рута

Нужно преобразовывать "красивые" урлы в реальные, с учетом домена. (мультисайтовая система)
Автор: Cheery
Дата сообщения: 20.06.2009 22:41
DrakonSoft

Цитата:
Нужно преобразовывать "красивые" урлы в реальные, с учетом домена. (мультисайтовая система)

да это то понятно.. простой совет для таких случаев - включите на время логгирование mod_rewrite обработки.. и посмотрите
наверняка проблема в чем то простом (устал и не очень сейчас думается )
Автор: DrakonSoft
Дата сообщения: 20.06.2009 22:55
А можно подскозать, как включить логирование? Я понимаю, нубский вопрос Но никогда логирование не включал
Автор: Cheery
Дата сообщения: 20.06.2009 22:57
DrakonSoft
http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritelog
и ниже..
но только на время на 6 или выше уровне.
Автор: DrakonSoft
Дата сообщения: 20.06.2009 22:59
to Cheery

Преогромное спасибо!!!
Автор: phpbbmods
Дата сообщения: 25.06.2009 08:16
Всем привет!
Уважаемые! может, кто сможет подсказать, что означает данный лог

Код:
[Thu Jun 25 00:00:39 2009] [debug] mod_rewrite.c(1643): [client 00.000.000.000] mod_rewrite's internal redirect status: 0/10.
Автор: Cheery
Дата сообщения: 25.06.2009 17:29
phpbbmods

Цитата:
может, кто сможет подсказать, что означает данный лог

означает, что пока ни одного внутреннего редиректа не произошло
Автор: phpbbmods
Дата сообщения: 25.06.2009 20:43
Cheery
Спасибки огромное,
Но странно вообще применяем mod_rewrite, там как положено на других серваках кроме infobox.ru подобного лога не замечали дак и само интересное то все работает ок а они на этот лог тычат.

.htaccess

Код:
DirectoryIndex index.php

ErrorDocument 404 /error/404/
ErrorDocument 403 /error/403/
ErrorDocument 401 /error/401/

<FilesMatch "(\.(pdf|rtf|zip|rar|doc|xls|csv|tar|tar.gz|bin|fdl|tbz))$">
Order deny,allow
Deny from all
</FilesMatch>

RewriteEngine On
Options +FollowSymlinks
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/$ /inc/index.php?url=$1 [L]
RewriteRule ^(.*)/(.*).html$ /inc/index.php?url=$1&p=$2 [L]
Автор: Cheery
Дата сообщения: 25.06.2009 20:45
phpbbmods

Цитата:
а они на этот лог тычат.

кто "они"?

Цитата:
кроме infobox.ru подобного лога не замечали

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

Цитата:
Я уж пересмотрел все вроде все в нем верно почему же тогда ошибка или чтото нето у меня в .htaccess

какая ошибка?? о чем речь вообще??
не надо принимать нас за телепатов
Автор: phpbbmods
Дата сообщения: 25.06.2009 21:11
Cheery

они это infobox.ru
А речь о том что поддержка хостинга infobox.ru
Говорит что у нас на сайте при посещении всего 25 000 человек в сутки большая нагрузка на сервер и infobox.ru указывает на файл в логах - error_log
Вот выше в посте я и привел запись с этого файла.


Цитата:
означает, что пока ни одного внутреннего редиректа не произошло


Вот я и подумал может у меня что то не правильно именно в .htaccess
Автор: Cheery
Дата сообщения: 25.06.2009 21:22
phpbbmods

Цитата:
Вот выше в посте я и привел запись с этого файла.

вы же не первоначальную запись привели? это не ошибка, пока что..
ошибка будет звучать что то вида
[Mon Jan 24 10:47:59 2005] [error] [client 192.168.2.101] Request
exceeded the limit of 10 internal redirects due to probable
configuration error. Use 'LimitinternalRecursion' to increase the limit
if necessary. Use 'LogLevel debug' to get a backtrace.
Автор: phpbbmods
Дата сообщения: 25.06.2009 21:45
Cheery
файл .ru_error_log - 19.5 MB

да онЯ не понимаю что в нем если тот код что я привел первом посте не ошибка зачем он тогда вообще пишется?

и почти все такие а вот пару штук есть таких

Код:
[Thu Jun 25 00:34:09 2009] [info] [client IP] (32)Broken pipe: client stopped connection before send body completed
Автор: Cheery
Дата сообщения: 25.06.2009 22:06
phpbbmods

Цитата:
[Thu Jun 25 00:34:09 2009] [info] [client IP] (32)Broken pipe: client stopped connection before send body completed

означает, что связь была разорвана клиентом до отправки ответа. тормозит вебсервер


Цитата:
не понимаю что в нем если тот код что я привел первом посте не ошибка зачем он тогда вообще пишется?

он пишется перед тем, что я процитировал.. обычно
опять же - проблема может быть из за нагрузки.
Автор: phpbbmods
Дата сообщения: 25.06.2009 22:13
Cheery
Спасибо огромное за ответы, я понял, просто были сомнения потому еще раз спасибо.
Нужно уже брать сервак видимо да и все дела.
Автор: DJCyxapuk
Дата сообщения: 27.06.2009 21:26
Народ идем зарабатывать бабки !!!
Автор: Neuromancer
Дата сообщения: 09.07.2009 07:09
Ребят, возникла такая проблема:
Есть сайт на хостинге site.ru, домен 2 уровня. Привязал к хостеру второй домен domain2.ru и положил второй сайт в папку domain2, т.е., второй сайт теперь доступен по адресу site.ru/domain2. Нужно сделать так, чтобы второй сайт заработал по адресу domain2.ru

По FAQ у хостера сделал следующее (для domain2.ru и www.domain2.ru):


Код:
RewriteEngine On
Options +FollowSymlinks

RewriteCond %{ENV:REDIRECT_MYFLAG} ^$
RewriteCond %{HTTP_HOST} ^domain2\.ru$
RewriteRule ^(.+) %{HTTP_HOST}$1 [E=MYFLAG:1]
RewriteRule ^domain2\.ru(.*) /domain2/%{REQUEST_URI} [L]


RewriteCond %{ENV:REDIRECT_MYFLAG} ^$
RewriteCond %{HTTP_HOST} ^www\.domain2\.ru$
RewriteRule ^(.+) %{HTTP_HOST}$1 [E=MYFLAG:1]
RewriteRule ^www\.domain2\.ru(.*) /domain2/%{REQUEST_URI} [L]
Автор: dacuan
Дата сообщения: 09.07.2009 10:23
Neuromancer

Цитата:
Где я ошибся?

В выбранном подходе. Это делается не с помощью mod_rewrite, а виртуальными хостами.


Добавлено:
А вообще можно попробовать такое правило:

Код: RewriteCond %{HTTP_HOST} ^domain2\.ru$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain2\.ru$
RewriteRule ^(.*)$ domain2/$1 [L]
Автор: Neuromancer
Дата сообщения: 09.07.2009 10:28
dacuan
К сожалению, хостер такую возможность в данном тарифном плане не дает, только mod_rewrite а менять тариф или хостера в данный момент смысла нет (по ряду соображений, больше минусов, чем плюсов).
Кстати, я разобрался - тот вариант выше оказался рабочим, сразу не заработало, т.к. в .htaccess было еще несколько строк для устроения ЧПУ на основном сайте, из-за которых эту конструкцию заглючило. Исправилось переменой мест слагаемых.

Добавлено:

Цитата:
RewriteCond %{HTTP_HOST} ^domain2\.ru$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain2\.ru$
RewriteRule ^(.*)$ domain2/$1 [L]

Internal Server Error
Автор: dacuan
Дата сообщения: 09.07.2009 10:38
Neuromancer
А логи что говорят?
Автор: Neuromancer
Дата сообщения: 09.07.2009 10:40
dacuan
Request exceeded the limit of 10 internal redirects due to probable configuration error.
Автор: dacuan
Дата сообщения: 09.07.2009 10:44
Neuromancer
Тогда так

Код: RewriteCond %{REQUEST_URI} !^domain2/
RewriteCond %{HTTP_HOST} ^domain2\.ru$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain2\.ru$
RewriteRule ^(.*)$ domain2/$1 [L]
Автор: Neuromancer
Дата сообщения: 09.07.2009 11:19

Цитата:
RewriteCond %{REQUEST_URI} !^domain2/
RewriteCond %{HTTP_HOST} ^domain2\.ru$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain2\.ru$
RewriteRule ^(.*)$ domain2/$1 [L]

Тот же результат, к сожалению.
Автор: dacuan
Дата сообщения: 09.07.2009 11:35

Код: RewriteCond %{REQUEST_URI} !^/domain2/
RewriteCond %{HTTP_HOST} ^domain2\.ru$ [OR]
RewriteCond %{HTTP_HOST} ^www\.domain2\.ru$
RewriteRule ^(.*)$ domain2/$1 [L]
Автор: Neuromancer
Дата сообщения: 09.07.2009 11:43
dacuan
А вот это прекрасно сработало и гораздо элегантнее, чем мой вариант. Спасибо
Автор: chupurnov
Дата сообщения: 10.07.2009 01:39
Здравствуйте. Граблю один диллерский сайт. Все ссылки тоже перебиваю чтобы шли через мой сайт.
Все работает если ссылка имеет вид:

www.site.ru/wps/Honda_OEM/HondaATV.asp
все что идет после .ru это с забугорного сайта

для нее у меня в .htaccess есть строчка
RewriteRule ^wps/([a-zA-Z0-9_/\.]+)$ index.php?dn=mycab&to=mikrofisha&mkh=1&$1 [NC]

Вот если ссылка имеет вид:

http://www.site.ru/wps/Honda_OEM/HondaATV.asp?Type=11&pf=1

и в .htaccess соответственно

RewriteRule ^wps/([a-zA-Z0-9_/\.\?\&=]+)&pf=1$ index.php?dn=mycab&to=mikrofisha&pf=1&mkh=1&$1 [NC]

то соответствие не находится и все падает в следующее выражение хотя
проверил эту регулярку в RegexBuddy все правильно переделывает, проблема единственно в знаке ? в начальной ссылке, если без него то все работает
Автор: Cheery
Дата сообщения: 10.07.2009 02:58
chupurnov

Цитата:
то соответствие не находится и все падает в следующее выражение хотя
проверил эту регулярку в RegexBuddy все правильно переделывает, проблема единственно в знаке ? в начальной ссылке, если без него то все работает

не находится, потому что аргументы запроса там не проверяются.
для них нужно писать отдельный
RewriteCond %{QUERY_STRING} тут_регулярка
Автор: chupurnov
Дата сообщения: 10.07.2009 11:54
Если место:
^wps/([a-zA-Z0-9_/\.\?\&=]+)&pf=1$
создать такое правило:
^wps/([a-zA-Z0-9_/\.\?\&=]+)$
то выражение подходит.
Хотя входящий запрос выглядит как
http://www.site.ru/wps/Honda_OEM/HondaATV.asp?Type=11&pf=1
Автор: Cheery
Дата сообщения: 10.07.2009 20:17
chupurnov
вы читаете, что вам было выше сказано?
rewriterule не обрабатывает аргументы запроса!
Автор: crimea360
Дата сообщения: 28.07.2009 16:28
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^site\.ru$ [NC]
RewriteRule ^!(cgi-bin.*)$ http://www.site.ru/$1 [R=301,L]

Есть такая запись в .htaccess. Задача исключить из редиректа папку cgi-bin.
Но не работает, и не известно работала ли вообще
Автор: Cheery
Дата сообщения: 28.07.2009 18:31
crimea360
отрицание ! должно стоять перед ^

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445

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


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