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

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

Автор: afiget
Дата сообщения: 21.08.2007 12:27
перед
Цитата:
/?a=1&b=2
что стояло строке браузера?
если index.php, то и сделайте так, чтобы вызов с index.php перенаправлялся на него же.
Автор: crimea360
Дата сообщения: 21.08.2007 14:29

Цитата:
что стояло строке браузера?
если index.php, то и сделайте так, чтобы вызов с index.php перенаправлялся на него же.


Так а как это сделать?
Cколько вариантов пробовал, ничего не получается
Автор: Tstf
Дата сообщения: 22.08.2007 09:36
Нажно сделать так, чтобы боты google, yandex, rambler и yahoo не индексировали форум по адресу mysite.net. Но непросто написать что-то вроде



Код: RewriteCond %{HTTP_USER_AGENT} ^.*Slurp.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*msnbot.* [NC]
RewriteRule ^(.*)$ - [F]
Автор: dacuan
Дата сообщения: 22.08.2007 09:44
Tstf

А если так?


Код: RewriteCond %{HTTP_USER_AGENT} !^yandex.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^googlebot.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^.*gaisbot.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^rambler.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^aport.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^metacrawler.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^msnbot.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^.*crawler.* [NC]
RewriteCond %{HTTP_HOST} ^www.mysite.net$ [OR]
RewriteCond %{HTTP_HOST} ^mysite.net$

RewriteRule ^(.*)$ http://mysite.net/forum.html [R=301,L]
Автор: Tstf
Дата сообщения: 22.08.2007 10:10
dacuanТогда и ботом и всех остальных кидает на http://mysite.net/form.html
И причём цикл не прекращается... т.е. приходя на http://mysite.net/form.html кидает снова на http://mysite.net/form.html и так вечно.
Автор: dacuan
Дата сообщения: 22.08.2007 10:23
Tstf
Был неправ Вот это должно убрать вечный цикл

Код: RewriteCond %{HTTP_USER_AGENT} !^yandex.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^googlebot.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^.*gaisbot.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^rambler.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^aport.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^metacrawler.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^msnbot.* [NC,OR]
RewriteCond %{HTTP_USER_AGENT} !^.*crawler.* [NC]
RewriteCond %{HTTP_HOST} ^www.mysite.net$ [OR]
RewriteCond %{HTTP_HOST} ^mysite.net$
RewriteCond %{REQUEST_URI} !^forum\.html$

RewriteRule ^(.*)$ http://mysite.net/forum.html [R=301,L]
Автор: Tstf
Дата сообщения: 22.08.2007 10:51
Цикл всё равно повторяется... и по адресу mysite.net никто зайти не может.


Цитата:
но я не понимаю почему боты отрабатывают по этому правилу. Можете привести кусок лога преобразования?

А где мне его взять?
Автор: crimea360
Дата сообщения: 22.08.2007 10:51
dacuan


Цитата:
RewriteCond %{QUERY_STRING} ^a=([^&]+)&b=([^&]+)
RewriteRule .* /a/%1/b%2/index.html? [L,R=301]


Я вчера этот вариант пробовал, нашел описние сдесь:
http://xpoint.ru/forums/internet/webservers/apache/thread/29011.xhtml

Но в этом случае получается непрекращающийся цикл
Вот отрывок из access_log

Код:
[21/Aug/2007:14:29:14 +0000] "GET /n1/1/index.html HTTP/1.1" 301 344 "-"
[21/Aug/2007:14:29:15 +0000] "GET /n1/1/index.html HTTP/1.1" 301 344 "-" "Mozilla/4.0 [21/Aug/2007:14:29:15 +0000] "GET /n1/1/index.html HTTP/1.1" 301 344 "-" "Mozilla/4.0 [21/Aug/2007:14:29:15 +0000] "GET /n1/1/index.html HTTP/1.1" 301 344 "-" "Mozilla/4.0 [21/Aug/2007:14:29:16 +0000] "GET /n1/1/index.html HTTP/1.1" 301 344
Автор: dacuan
Дата сообщения: 22.08.2007 11:28
crimea360
А если так?


Код: RewriteCond %{QUERY_STRING} ^a=([^&]+)&b=([^&]+)
RewriteRule ^index\.php$ /a/%1/b%2/index.html? [L,R=301]
Автор: crimea360
Дата сообщения: 22.08.2007 12:23

dacuan


Код:
RewriteCond %{QUERY_STRING} ^([^/]*)=([^/]*)
RewriteRule ^$ /%1/%2/index.html? [L,R=301]
Автор: dacuan
Дата сообщения: 22.08.2007 12:35
crimea360
Закоментированные строки содержат ошибку. Вместо

Код: RewriteRule ([^/]*)/([^/]*)/([^/]*)/([^/]*)/index\.html /?$1=$2&$3=$4 [L]
RewriteRule ([^/]*)/([^/]*)/index\.html /?$1=$2 [L]
Автор: Tstf
Дата сообщения: 22.08.2007 13:30

Цитата:
И перезапустить апача. Крайне не рекомендуется производить это на работающем сервере, так как объемы отладочной информации генерируются действительно большие и найти свое бывает очень сложно.

Значит такое сделать я не смогу.

Что же с htaccess ? как быть?
Автор: crimea360
Дата сообщения: 22.08.2007 14:34
dacuan

Спасибо, действительно заменил /?$1=$2 [L] на /index.php?$1=$2 [L] и все заработало
Автор: Anton_Y
Дата сообщения: 31.08.2007 12:20
Подскажите решение..
есть домен ONE, а также есть два CNAME на него (TWO, THREE)

т.е. http://one = http://two = http://three
хочу чтобы при заходе
по http://one открывалось все как обычно.. index.html и так далее.

а при заходе через http://two - был редирект на http://someurl1
и при заходе через http://three - был редирект на http://someurl2

делал разные вещи..
примерно вот так

Код:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^two
RewriteRule ^/$ http://someurl1 [L]

RewriteCond %{HTTP_HOST} ^three
RewriteRule ^/$ http://someurl2 [L]
Автор: dacuan
Дата сообщения: 31.08.2007 12:33
Anton_Y

А прочитать ветку лень? На предыдущей странице как раз обсуждается эта проблема.
Автор: Anton_Y
Дата сообщения: 31.08.2007 12:54
проблема решилась путем замены

RewriteRule ^/$ http://someurl1 [L]

на

RewriteRule ^(.*)$ http://someurl1 [L]
Автор: dacuan
Дата сообщения: 31.08.2007 13:03
Anton_Y
Ага, и получаем вечный цикл
Автор: Anton_Y
Дата сообщения: 31.08.2007 13:12
dacuan
у меня все пучком.. никаких циклов
Автор: dacuan
Дата сообщения: 31.08.2007 13:18
Anton_Y
Именно эта строка? Или все-таки немного с отличием?
Автор: Anton_Y
Дата сообщения: 31.08.2007 13:32

Код: [root@mail [16:25:31] tmp]# cd /usr/local/apache/htdocs
[root@mail [16:32:01] htdocs]# more .htaccess
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^awstat
RewriteRule ^(.*)$ http://myurl1 [L]


RewriteCond %{HTTP_HOST} ^sams
RewriteRule ^(.*)$ http://myurl2 [L]

DirectoryIndex index.html

Автор: dacuan
Дата сообщения: 31.08.2007 14:28
Anton_Y
Удивлен, страницу назад подобный конфиг не работал у двух людей.
Автор: koc
Дата сообщения: 07.09.2007 14:56
помогите преобразовать ссылку типа http://site.ua/?op=game&g=f_e_a_r в http://site.ua/game/f_e_a_r
ессно f_e_a_r - не постоянное слово.
Автор: RizaR
Дата сообщения: 13.09.2007 06:02
Всем привет!
Интересует возможность создания поддомена для профиля пользователя вида site.ru/index.php?name=Account&op=info&uname=Vasia
А поддомен должен иметь вид:
Vasia.site.ru
Мне сказали, что это невозможно, в интернете я нашел только возможность создавать поддомены для отдельной папки.
Но ведь каким-то чудом создаются поддомены на livejournal.com, nnm.ru, beon.ru и пр. Как у них это получилось?
Автор: 6epcepk
Дата сообщения: 13.09.2007 08:48
RizaR
http://forum.ru-board.com/topic.cgi?forum=31&topic=8134&start=300#12
Автор: RizaR
Дата сообщения: 13.09.2007 17:23
Эм.... у меня ситуэйшен немного посложнее.

Там в коде используется такой пример (в настройках сервера)

Цитата:

ServerName mysite.com
ServerAlias blog.mysite.com





Цитата:

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^blog.mysite.com$
RewriteRule ^(.*)$ blog/$1 [NS,L]

Это в .htaccess

Тут четко прописано - blog
Но у меня то имя и поддомен может быть совершенно любым
Автор: GTHack
Дата сообщения: 18.09.2007 12:23
на конкретном сервере (на другом работает) не работает довольно стандартный набор правил для мод-реврайта

(.htaccess в директории ./rewrite/)

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /rewrite/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /rewrite/index.php [L]
</IfModule>

даёт 500ю Internal Server Error, вот лог аппача

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.

т.е. петля получилась почему то

поставил
RewriteLogLevel 3

вот одна из "попыток" из лога мод-реврайта

strip per-dir prefix: /var/vhosts/domain.com/httpdocs/proxy5/index.php -> index.php
applying pattern '.' to uri 'index.php'
strip per-dir prefix: /var/vhosts/domain.com/httpdocs/proxy5/index.php -> index.php
applying pattern '.' to uri 'index.php'
rewrite 'index.php' -> '/proxy5/index.php'
trying to replace prefix /var/vhosts/domain.com/httpdocs/proxy5/ with /proxy5/
internal redirect with /proxy5/index.php [INTERNAL REDIRECT]
applying pattern '.' to uri 'redirect:/proxy5/index.php'
rewrite 'redirect:/proxy5/index.php' -> '/proxy5/index.php'
trying to replace prefix /var/vhosts/domain.com/httpdocs/proxy5/ with /proxy5/
internal redirect with /proxy5/index.php [INTERNAL REDIRECT]

вижу что косячит, а как поправить не знаю
помогите плс
Автор: pinkwolf
Дата сообщения: 20.09.2007 04:22
Помогите!

Есть такое правило:
RewriteRule ^([^/]*)/$ /index.php?o=$1 [L]

Как сделать исключение, например, для папки /admin/ , тоесть нужно что бы для определенных папок редирект не работал.
Автор: Vygose
Дата сообщения: 06.10.2007 00:10
Подскажите плиз, почему не совсем верно работает такой код htaccess.
Качают файл гигабайтами с programas-gratis, вот попробовал их
на download.com отправлять, но не работает, отдает мой файл почему-то.

Вот весь файл, на всякий случай:

ErrorDocument 404 /404.html
ErrorDocument 403 /403.html
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} ^http://www.mysite.com/download/mysoft.exe$
RewriteCond %{HTTP_REFERER} ^http://.*programas-gratis.*$ [NC,OR]
RewriteCond %{REMOTE_HOST} ^202-228.furanet.com$ [NC,OR]
RewriteCond %{REMOTE_ADDR} ^195.78.228.202$ [NC]
RewriteRule ^.*$ http://www.download.com/MySoft/zzzz.html [R,L]
Автор: afiget
Дата сообщения: 06.10.2007 17:33
pinkwolf
Написать для них правило и поставить его первым в списке.
Автор: artserge
Дата сообщения: 09.10.2007 11:41
игнорируется файл .haccess со следующим содержимым (хостинг ник.ру)

Options +FollowSymLinks
RewriteEngine on

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*).html$ index.php?$1 [L,QSA]


Сервер возвращает ошибку 404, и даже при намеренной ошибке в синтаксисе .htaccess - 404 а не 500

В настройках хостинга мод_реврайт включен

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445

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


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