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

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

Автор: Cheery
Дата сообщения: 13.07.2005 23:03
DzOOMer

Цитата:
нету там ошибок, связанных с этим.

ну не может этого быть.. все 500 ошибки туда логируются.. ты не смотри логи ошибок php, смотри логи ошибок сервера.
Автор: DzOOMer
Дата сообщения: 13.07.2005 23:04

Цитата:
А ты попытайся набрать в адресной строке index.php?f=Ф и увидишь что она преобразуется в index.php?f=%D4 и ты в скрипте получишь переменную, просто тебе перед использованием переменной нужно будет воспользоваться функцией urldecode()


urldecode() это для php.

если я наберу в браузере index-f-%D4.htm то кто мне преобразует его в index.php?f=%D4
я говорю про файл .htaccess

что писать для этого случая вместо

RewriteRule ^index-([a-z]+)-([a-zA-Z_-]*)\.htm$ $index.php?$1=$2 [L]

?

Добавлено:
ошибка 500 появляется только после того, как я добваляю в файле htaccess маску с русскими символами.
если в браузере вписать www.mysite.ru/index.php?f=Ф то все срабатывает нормально, и нет никаких ошибок.
мне надо, чтобы при наборе хоть www.mysite.ru/index-f-%D4.htm хоть www.mysite.ru/index-f-Ф.htm mod_rewrite превращал это в index.php?f=Ф или в index.php?f=%D4

в php я уже разберусь с юникодом и сделаю как надо.

вся проблема в том как сделать фильтр на русские буквы (или их юникод формат)
Автор: DzOOMer
Дата сообщения: 15.08.2005 09:28
новая задачка:

есть адрес вида site.ru (локальный путь /domain/publik_html)
есть поддомен вида admin.site.ru (локальный путь /domain/publik_html/admin)

необходимо сделать так, чтобы обращение по адресу admin.site.ru было равносильно обращению к site.ru тоесть сервер брал скрипт не из /domain/publik_html/admin а из /domain/publik_html

пробовал так:
(файл .htaccess в /domain/publik_html)
RewriteEngine on
RewriteRule ^admin/(.*) /$1 [L]

но не выходит.

как еще это можно реализовать?

ps простой редирект не поможет т.к. скрипту нужно видеть именно admin.site.ru в DNS name.
Автор: 6epcepk
Дата сообщения: 20.08.2005 18:38
День добрый,

Код:
RewriteEngine on
RewriteBase /

RewriteRule ^newsarchives$ /index?act=newsarchives
Автор: Mxmv
Дата сообщения: 28.10.2005 08:03
У меня задача похожа на вопрос DzOOMer'a:
есть папка http://domen.site.ru/folder/
необходимо ее вызывать при обращении к http://folder.site.ru

Я пробовал в folder.site.ru в .htaccess прописать

Код: RewriteRule /(.*) http://domen.site.ru/folder/$1
Автор: dacuan
Дата сообщения: 28.10.2005 12:47

Цитата:
У меня задача похожа на вопрос DzOOMer'a:
есть папка http://domen.site.ru/folder/
необходимо ее вызывать при обращении к http://folder.site.ru

Я пробовал в folder.site.ru в .htaccess прописать

Код:
RewriteRule /(.*) http://domen.site.ru/folder/$1     

но несработало.

Подскажите пожалуйста, как правильно сделать.

В корне сайта в .htaccess добавь
RewriteCond %{HTTP_HOST} ^folder.site.ru$
RewriteRule (.*) folder/$1 [L]

folder.site.ru должен быть алиасом для domen.site.ru
Автор: MAX_DAMAGE
Дата сообщения: 04.03.2006 12:36
ПОчему не работает такая конструкция?

RewriteEngine on
Options +FollowSymlinks
RewriteCond %{HTTP_HOST} ^directory.site.com$
RewriteRule (.*) directory/$1 [L]
RewriteRule ^directory[/]?$ index.php?groupurl=directory [QSA]


Тоесть при обращении к directory.site.com должен выполняться site.com/index.php?groupurl=directory Однако сервер возвращает "500 Internal Server Error"
Автор: dacuan
Дата сообщения: 04.03.2006 13:02
MAX_DAMAGE
Попробуй так:

Код:
RewriteEngine on
Options +FollowSymlinks

RewriteCond %{HTTP_HOST} ^directory.site.com$
RewriteRule .* index.php?groupurl=directory [QSA]
Автор: MAX_DAMAGE
Дата сообщения: 04.03.2006 13:06
Тоже не покатило
Автор: dacuan
Дата сообщения: 04.03.2006 13:14
MAX_DAMAGE

1) Что пишет?

2) Если убрать строку
RewriteCond %{HTTP_HOST} ^directory.site.com$
Переадресация работает?

3) directory.site.com прописан как ServerAlias?
Автор: MAX_DAMAGE
Дата сообщения: 04.03.2006 13:50
А, забыл спросить: что за ServerAlias и как его делать? Пишет "Internal Server Error"
Автор: dacuan
Дата сообщения: 04.03.2006 14:03

Цитата:
Пишет "Internal Server Error"


Значит ошибка в синтаксисе .htaccess .
Посмотри в Log'е ошибок, может там есть подсказка. Если нет, то отключай строки, пока не найдешь ту, что глючит.


Цитата:
что за ServerAlias и как его делать

ServerAlias Это псевдоним сервера. Он уакзывает апачу, что при запросе к хосту directory.site.com он должен обрабатывать его как site.com. Прописывается в httpd.conf в секци VirtualHost.

Если ServerAlias не указан, то Апач просто не будет знать куда перенаправить запрос.
Автор: Danil Lab
Дата сообщения: 04.03.2006 20:41
Подскажите как правельно преобразовать урл вида
http://localhost/view.php?dir=./image/128x160/logo/&list=2
к виду
http://localhost/image/128x160/2/
/image/128x160/ - dir (каталогф)
/2/ - list (страница)
Автор: Cheery
Дата сообщения: 04.03.2006 23:55
Danil Lab
а самому сначала попробовать?
подсказка.. переменная QUERY_STRING
Автор: Danil Lab
Дата сообщения: 05.03.2006 04:56
Cheery
Я именно через неё и сделал ,Имхо это криво.

Хочу сделать через .htaccess с mod_rewrite.
Только вот не получается, т.к. параметр dir может и /1/2/3/4 так и /1/ быть тоесть не фиксирован.
Автор: Cheery
Дата сообщения: 05.03.2006 05:01
Danil Lab

Цитата:
Имхо это криво.

Хочу сделать через .htaccess с mod_rewrite.

ну и ?? чем не устраивает %{QUERY_STRING} в htaccess???

Цитата:
Только вот не получается, т.к. параметр dir может и /1/2/3/4 так и /1/ быть тоесть не фиксирован.

и?
Автор: Danil Lab
Дата сообщения: 05.03.2006 14:56

Цитата:
ну и ?? чем не устраивает %{QUERY_STRING} в htaccess???

Я подумал в .php


Вот пример не полностью рабочего варианта, помогите дописать.

Код:
RewriteEngine on
RewriteBase /
RewriteRule ^view/?(.*)/(.*) shop.php?p=$1&r=$2
Автор: Cheery
Дата сообщения: 06.03.2006 21:03
Danil Lab
ты определенно не хочешь напрягать голову..а это полезно, между прочим..

RewriteBase /
RewriteRule ^view/(.*/.*)/(.*) shop.php?p=$1&r=$2
ps: не проверял
Автор: Church
Дата сообщения: 07.03.2006 12:06
Народ, уже который день бьюсь над проблемой - не могу решить...
В общем, требуется из ссылки вида:
http://myscript.com/http://google.com?q=query&bla-bla-bla
получить этот http://google.com?q=query&bla-bla-bla

Денверовский пакет - выдаёт ошибку доступа, linux-сервера выдают:
http:/google.com

Нужно такое:
http://safeURL.de/http://forum.ru-board.com/topic.cgi?forum=31&topic=8134&start=40

Как решить проблему?
Автор: Danil Lab
Дата сообщения: 07.03.2006 16:09
Cheery
Пришлось напреч мозги

вот что получилось.

RewriteEngine on
RewriteBase /
RewriteRule ^view/(.*)/([0-9]{1,2}) shop.php?p=$1&r=$2

ps: Проверял работает

Добавлено:
А вот под мою цель не полностью подходит )

http://localhost/view/logos/12 - все правельно папка view/logos/ , страница 12

обращяюсь к файлу http://localhost/view/logos/0035.gif - в место того чтоб выдать содержимое, он обрабатывается как страница 00

Как правbльно поступить?
Автор: Church
Дата сообщения: 07.03.2006 17:14

Цитата:
Как правbльно поступить?


Код:
RewriteEngine on
RewriteBase /
RewriteRule ^view/(.*)/([0-9]+) shop.php?p=$1&r=$2
Автор: Danil Lab
Дата сообщения: 07.03.2006 19:56
Church
это я знаю, но мне надо чтоб показалась картинка http://localhost/view/logos/0035.gif
Автор: Cheery
Дата сообщения: 07.03.2006 20:08
Danil Lab

Цитата:
А вот под мою цель не полностью подходит )

ну так пиши их сразу и полностью
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^view/(.*)/([0-9]{1,2}) shop.php?p=$1&r=$2
Автор: Flexner
Дата сообщения: 28.03.2006 09:19
Всем доброго времени!
Так вопрос...
Есть 3 форума с url вот такого вида
_http://www.site.url/?forum=forum1
_http://www.site.url/?forum=forum2
_http://www.site.url/?forum=forum3
Как сделать из них url с поддоменами? т.е.
_http://forum1.site.url
_http://forum2.site.url
_http://forum3.site.url
Автор: Brodyaga
Дата сообщения: 28.03.2006 12:09
Этот вопрос не решается только mod_rewrite, как мне дали понять в аналогичной теме.
Автор: dacuan
Дата сообщения: 28.03.2006 13:15
Flexner
Создай для своего хота три псевдонима (ServerAlias):
forum1.site.url
forum2.site.url
forum3.site.url

И напиши такое правило:

Код:
RewriteCond %{HTTP_HOST} ^forum1\.
RewriteRule (.*) /?forum=forum1

RewriteCond %{HTTP_HOST} ^forum2\.
RewriteRule (.*) /?forum=forum2

RewriteCond %{HTTP_HOST} ^forum3\.
RewriteRule (.*) /?forum=forum3

Автор: Flexner
Дата сообщения: 28.03.2006 14:13
dacuan
Не работает The server encountered an internal error or misconfiguration and was unable to complete your request.
Автор: dacuan
Дата сообщения: 28.03.2006 14:21
Flexner
Посмотри в error.log на что он ругается
Автор: Yagovdik
Дата сообщения: 11.04.2006 09:31
Привет всем!
Господа, очень Нужна помощь.
Нужен какой-то отдельный скрипт, на к-рый мод_реврайтом в корне сайта будут перенаправляться все запросы к любой странице, он будет запросы обрабатывать и потом уже перенаправлять к самой запрошенной странице. Кроме того, надо что-то придумать, чтоб избежать бесконечного цикла - когда обработчик перенаправляет к целевой странице - не надо, чтоб реврайт сработал снова, и опять вызывал обработчик по второму разу, итд..

Рассмотрю и проверю любые варианты, а то уже 2-ю неделю над этим бьюсь.
Автор: Cheery
Дата сообщения: 11.04.2006 17:39
Yagovdik

Цитата:
Нужен какой-то отдельный скрипт

так все же, что он должен делать?

Ты писал, что логи апача не устраивают - чем же?

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445

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


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