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

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

Автор: iltmpz
Дата сообщения: 16.07.2007 17:07
Точно, почитать лог не догадался
Сейчас посмотрел, написано: "RewriteMap not allowed here"
И что это значит?
у меня файл .htaccess выглядит так:

Код:
RewriteEngine On
RewriteMap map txt:/usr/local/www/map.txt
и т.д...
Автор: Cheery
Дата сообщения: 16.07.2007 17:09
iltmpz

Цитата:
И что это значит?

http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html#RewriteMap

Цитата:
Context: server config, virtual host

то есть только через httpd.conf, то есть через настройку сервера
Автор: iltmpz
Дата сообщения: 16.07.2007 17:23
Ой, точно, недочитал
Спасибо, значит буду разбираться с httpd.conf (почему-то оттуда у меня вообще mod_Rewrite не работает...)
Автор: Caslix
Дата сообщения: 17.07.2007 08:37
Как все таки можно реализовать редирект со всех подобных страниц http://www.site.ru/?asdfasdf на главную. Нужен именно редирект, а не просто, чтобы по таким урлам была главная...
Автор: Cheery
Дата сообщения: 17.07.2007 18:15
Caslix

Цитата:
Нужен именно редирект, а не просто, чтобы по таким урлам была главная...

блин.. повторяю еще раз.. это и есть главная.. mod_rewrite тут не нужен.
в корне лежит index.php?
вот и смотришь в нем, какие аргументы в GET запросе и делает форвард куда тебе надо
Автор: iltmpz
Дата сообщения: 19.07.2007 14:19
разобрался, у меня в httpd.conf работают RewriteMap и RewriteLog, а RewriteRule не работает. А в .htaccess наоборот.
прописал RewriteRule в .htaccess в корень веб-сервера, все работает (хоть это и несколько криво)
Автор: Cheery
Дата сообщения: 19.07.2007 19:09
iltmpz

Цитата:
а RewriteRule не работает

все работает.. просто нужно правильно писать.. RewriteEngine on писал до этого?
Автор: iltmpz
Дата сообщения: 20.07.2007 11:42
да, конечено.
В httpd.conf сразу после строк AddModule:

Код: RewriteEngine On
RewriteMap map prg:/usr/local/map.pl
RewriteRule ^(.*)$ ${map:$1}
RewriteLog /var/log/apache/mod_rewrite.log
RewriteLogLevel 9
Автор: kririll
Дата сообщения: 20.07.2007 20:13
Ребят, помогите:
мне надо направлять людей на определенную страницу моего сайта, если они пришли на мой сайт с другого сайта.

У меня есть такая конструкция:

Код:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://www.test2.ru/cms8
RewriteCond %{HTTP_REFERER} !^http://test2.ru/cms8
RewriteRule /* http://www.test2.ru/cms8/warning.htm [R,L]
Автор: Cheery
Дата сообщения: 20.07.2007 20:31
kririll
а страницу назад перемотать???
mod_rewrite: документация, готовые решения, вопросы
Автор: Mamayka
Дата сообщения: 23.07.2007 17:33
если было ткните носом...
топик пролистал ненашол..

есть сайт mysite.com
есть blog который живёт в mysite.com/blog
как сделать чтобы работало blog.mysite.com

или это к mod_rewrite не относиться ?
Автор: Cheery
Дата сообщения: 23.07.2007 17:54
Mamayka

Цитата:
или это к mod_rewrite не относиться ?

нет.. это настройки веб сервера.
Автор: dacuan
Дата сообщения: 24.07.2007 09:24
Mamayka
В настройке веб-сервера (файл httpd.conf) необходимо сделать алиас для основного домена:

Код: ServerName mysite.com
ServerAlias blog.mysite.com
Автор: Rando1
Дата сообщения: 28.07.2007 13:32
Помогите с правилом:


Код: RewriteRule ^news/date/(.*)/page/([0-9]+)\.html(/?)+$ index.php?name=News&op=date&d=$1&pagenum=$2 [L]
Автор: 6epcepk
Дата сообщения: 29.07.2007 20:57
Есть правило:

Код: DirectoryIndex /
RewriteEngine On

RewriteRule ^news/(.*)/(.*)/?$ index.php?module=news&category=$1&news=$2 [L]
Автор: Cheery
Дата сообщения: 29.07.2007 21:06
6epcepk

Цитата:
Примитивная ошибка где-то..

не используй .* - он тебе захватит все.. и те же скобки
news/(\d+)/(\d+)/?$
Автор: 6epcepk
Дата сообщения: 29.07.2007 21:15
То же самое:

Код: Array
(
[module] => news
[category] => 15/34
)
Автор: Cheery
Дата сообщения: 29.07.2007 21:21
6epcepk

Цитата:
То же самое:

ок, замени \d на [0-9]
в регулярках \d определяет класс чисел.. не помню есть ли в mod_rewrite
Автор: 6epcepk
Дата сообщения: 29.07.2007 21:43
Да, действительно, у меня было две ошибки:
1) я использовал из регулярных выражений \w
2) перед данной конструкцией стояла конструкция

Код: RewriteRule ^news/(.*)(/?)/?$ index.php?module=news&category=$1 [L]
Автор: arcanum
Дата сообщения: 07.08.2007 07:48
Есть CMS, которая генерит ссылки вот такого вида

http://site.ru/index.php?id=34&doc=nashi_predlozheniya

В логике работы системы, прописано, что по id из базы выбирается все все все что относится к данной странице. Существует реврайт, который преобразует вот это

index.php?id=34&doc=nashi-predlozheniya

в это

nashi-predlozheniya-34.html

В принципе тут все просто - название страницы - это просто перепарсинный заголовок из русских букв...Но проблема в том, что нужно убрать циферу 34 и оставить только название. Возможно ли это?

В настоящий момент правило таково
RewriteRule ^([-_a-zA-Z0-9]+)-([0-9]+).html$ index.php?id=$2&doc=$1

Автор: Brodyaga
Дата сообщения: 07.08.2007 12:57
Если убрать передачу ID тогда необходимо изменить скрипт CMS. Надо ли это?
Автор: Break_Action
Дата сообщения: 09.08.2007 16:18
Народ, подскажите плз как организовать редирект.
пользователи будут приходить на сайт по динкам типа
http://1234.site.com
http://5678.site.com
далее надо их отредиректить на
http://www.site.com/cgi-bin/index.pl?param=1234
http://www.site.com/cgi-bin/index.pl?param=5678

То есть брать номер не существующего субдомена и подставлять его параметром к скрипту.
Заранее благодарен!
Автор: 6epcepk
Дата сообщения: 13.08.2007 08:21
Break_Action,
http://forum.ru-board.com/topic.cgi?forum=31&topic=8134&start=300#12




Я понимаю, что даже через mod_rewrite нельзя обработать данные после якоря (#)?
Что-то на подобии

Код: RewriteRule ^\#test/?$ index.php?foo=bar [L]
Автор: dacuan
Дата сообщения: 13.08.2007 10:41
Break_Action

Цитата:
То есть брать номер не существующего субдомена и подставлять его параметром к скрипту.

Субдомен ДОЛЖЕН существать иначе браузер просто не будет знать куда его направлять. Более того, для того, чтобы mod_rewrite мог их обрабатывать, все субдомены должны быть прописаны алиасами к основному.
Автор: Doublek
Дата сообщения: 16.08.2007 22:07
Вся CMS сайта работает через index файл, хотелось сделать так чтобы при
обращении к

Код: subdomain.site.ru/index.php
Автор: dacuan
Дата сообщения: 17.08.2007 09:10
Doublek
А вы уверены, что проблема именно в этих строках? Если их закомментировать все 500 ошибка не выдается?
Автор: lStaticl
Дата сообщения: 17.08.2007 17:35
Подскажите пожалуйтса как сделать из такой ссылки

Код: http://site.ru/pic.php?img=02b-f6.jpg&t=Дизайн%20интерьера
Автор: Doublek
Дата сообщения: 17.08.2007 22:56
dacuan
Уверен, если без них то загружается основная версия без

Код: ?site=subdomain...
Автор: dacuan
Дата сообщения: 20.08.2007 09:19
Doublek
А если так?

Код: RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} ^subdomain\.
RewriteRule (.*) index.php?site=subdomain
Автор: crimea360
Дата сообщения: 21.08.2007 09:47
Привет.
Есть сайт и он проиндексирован.
Изменили формат ссылок с /?a=1&b=2 на /a/1/b/2/index.html

В .htaccess прописал(отрывок)
RewriteRule ([^/]*)/([^/]*)/([^/]*)/([^/]*)/index\.html /?$1=$2&$3=$4 [L]
RewriteRule ([^/]*)/([^/]*)/index\.html /?$1=$2 [L]

Теперь не могу придумать как сделать так чтобы когда заходишь по старым ссылкам
/?a=1&b=2 они автоматически редиректились на /a/1/b/2/index.html.

Может кто подскажет?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445

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


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