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

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

Автор: Cheery
Дата сообщения: 09.10.2007 18:15
artserge

Цитата:
игнорируется файл .haccess со следующим содержимым

эм.. ну и? возможно настроен на файл с другим именем.
Автор: CfCoder
Дата сообщения: 09.10.2007 23:41
Ранее мне не приходилось пользаваться mod_rewrite.
Возможно ли переписать с помощью mod_rewrite.

http://domain/gallery.php
на
http://domain/gallery/
Автор: Cheery
Дата сообщения: 09.10.2007 23:42
CfCoder
возможно.. тут даже mod_rewite не нужен
http://httpd.apache.org/docs/1.3/mod/mod_alias.html#redirect
Автор: CfCoder
Дата сообщения: 10.10.2007 11:07
В .htaccess прописал, но редирект не работает.

Redirect /gallery.php http://domain/gallery

Помогите разобраться.

Автор: Cheery
Дата сообщения: 10.10.2007 16:40
CfCoder

Цитата:
В .htaccess прописал

который расположен где?
Автор: CfCoder
Дата сообщения: 10.10.2007 22:30
В корне

Так заработало:
Redirect gallery.php http://domain/gallery

Tak не работает
Redirect gallery.php http://domain/image_gallery
Автор: Poloten4ik
Дата сообщения: 16.10.2007 13:14
Всем здрасьте.

У меня такая проблема:
нужно сделать ВНУТРЕННИЙ редирект с URL вида
subdomain.site.ru?par=1&par2=2
на url вида
site.ru?par=1&par2=2

В корне поддомена "subdomain" лежит htaccess со след кодом:
RewriteEngine on
RewriteOptions MaxRedirects=10
Options +FollowSymlinks
RewriteBase /
RewriteRule ^.htaccess$ - [F]
RewriteRule ^(.*)$ http://site.ru/$1
В этом случае происходит ВНЕШНИЙ редирект на site.ru


Если файл использовать след код (без http:// перед доменом)
RewriteEngine on
RewriteOptions MaxRedirects=10
Options +FollowSymlinks
RewriteBase /
RewriteRule ^.htaccess$ - [F]
RewriteRule ^(.*)$ site.ru/$1

То естественно mod_rewrite пытается отобразить subdomain.site.ru/site.ru/.......

Как быть в этом случае? Может есть какая то директива, позволяющая обязать использовать внутренний редирект даже при прописывании домена с http://.
Или это в принципе невозможно?
Автор: Agent_SMIT
Дата сообщения: 25.10.2007 16:19
Здравствуйте.
Подскажите кто что может..

Допустим есть блог blog.site.ru, на котором есть сообщение blog.site.ru/post..
Как настроить редирект, чтобы перенаправлялось так:

http://www.blog.site.ru ---> http://blog.site.ru/
http://www.blog.site.ru/ ---> http://blog.site.ru/
http://www.blog.site.ru/post ---> http://blog.site.ru/post/
http://www.blog.site.ru/post/ ---> http://blog.site.ru/post/
http://blog.site.ru/post ---> http://blog.site.ru/post/

Чтобы все адреса были без ввв и со слешем на конце.

Советовали такой код, но работает некорректно:

Options +Indexes
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.твой-блог.ru
RewriteRule ^(.*)$ http://blog.site.ru/$1 [R=permanent,L]
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://blog.site.ru/$1/ [L,R=301]
Автор: Perf2k2
Дата сообщения: 25.10.2007 17:43
Agent_SMIT Попробуй так:

RewriteCond %{HTTP_HOST} ^www\.blog\.site\.ru$ [NC]
RewriteRule ^(.*)$ http://blog.site.ru/$1 [R=301,L]
RewriteCond %{THE_REQUEST} /[?.]
RewriteRule .* http://blog.site.ru/? [R=301,L]
RewriteCond %{THE_REQUEST} /[/]
RewriteRule .* http://blog.site.ru/? [R=301,L]


-----------------------------------------------------------------------------

Ребят, есть вопрос по mod_rewrite.

Есть определенный сайт, есть файлик htaccess, в нем использую правила наподобии этого:

RewriteRule ^benefits/potreb/(.*).html$ benefits/potreb/index.php?page=$1 [L]

Здесь все нормуль, работает. При обращении к адресу benefits/potreb/1.html открывается страница benefits/potreb/index.php?page=1. Но! Нужно сделать так, чтобы нельзя было при этом обратиться к скрипту напрямую, т.е. benefits/potreb/index.php?page=1. Можно ли это организовать как-нибудь?

Спасибо.
Автор: kostyar
Дата сообщения: 27.10.2007 12:37
Есть проблема.
Перевели сайт на статические ссылки, но в .htaccess дописали правило для того чтобы поисковик переходя по старым ссылкам проиндексировал новые. Но при этом если в адресной строке набрать старую динамическую ссылку, то происходит зацыкливание. Вот как выглядят правила.

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /show_good\.php\?idtov=([0-9]+)(&[^\\]+)?\ HTTP/ [NC]
RewriteRule ^show_good\.php$ /serial-%1.html? [R=301,L]
RewriteRule ^serial-([0-9]+)\.html$ /show_good.php?idtov=$1 [NC,L]

P.S. Причем на локальном сервере все номально работает


Может подскажет кто-нибудь в чем проблема????
Автор: crazyASD
Дата сообщения: 10.11.2007 18:21
Подскажите как сделать редирект с
http://site.ru/forum/index.php?PHPSESSID=f07ac91aedbffeac9a07ec9108551690&action=register
http://site.ru/index.php?option=com_registration&task=register
на
http://site.ru/component/option,com_smf/Itemid,174/action,register
В программировании не разбираюсь, просто прошу помочь соображающих.
Заранее спасибо
Автор: crazyASD
Дата сообщения: 11.11.2007 11:30
Переыв гугль построил такую конструкцию и пложил .htaccess в /forum/:

Код: RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^(www\.site\.ru\|[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+|0x[0-9a-f]{8})$ [NC]
RewriteCond %{HTTP_HOST} !^$
RewriteRule ^(.*)$ http://www.site.ru/component/option,com_smf/Itemid,174/action,register$1 [R=301,L]
Автор: shustersh
Дата сообщения: 20.11.2007 07:53
Каким образом можно сделать защиту от кеширования?
Т.е. имеем url вида domain.com/music
также в этой папке есть файлы index.php и load.php и папка с музыкой mp3
Необходимо чтобы пользователь видел ссылки в виде
domain.com/N/music/mp3/11.mp3 где N меняется случайным образом при запросе и в конечном итоге ведет на оригинальный файл domain.com/music/mp3/11.mp3
Пробовал написать такое


Добавлено:
Каким образом можно сделать защиту от кеширования?
Т.е. имеем url вида domain.com/music
также в этой папке есть файлы index.php и load.php и папка с музыкой mp3
Необходимо чтобы пользователь видел ссылки в виде
domain.com/N/music/mp3/11.mp3 где N меняется случайным образом при запросе и в конечном итоге ведет на оригинальный файл domain.com/music/mp3/11.mp3
Пробовал написать такое
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^.htaccess$ - [F]
RewriteRule ^(.*)(/[0-9]*/)(.*)$ /mp3/$1/$3
но тогда проблема - файлы index.php и load.php не доступны А если и доступны, то тогда url становится не динамическим
Помогите
Автор: driverok
Дата сообщения: 20.11.2007 10:49
Нужно сделать следующее-

если в урле присутствует сабдомен (например 123.domen.com)
нужно перенаправить его на domen.com/index.php?sub=123

если в урле присутствует сабдомен и переменные (например 123.domen.com/param/value.html)
нужно перенаправить его на domen.com/index.php?sub=123&param=value

Сабдомен и value - могут быть только числовыми

сам пока сваял вот это (но полностью не работает)

Код:
RewriteEngine on
RewriteBase /

RewriteCond %{HTTP_HOST} !^www\.domen\.com$
RewriteCond %{HTTP_HOST} (www\.)?(.*)\.domen\.com$
RewriteCond %{REQUEST_URI} !^(.+)
RewriteRule ^(.*)$ index.php?sub=%2

RewriteCond %{HTTP_HOST} !^www\.domen\.com$
RewriteCond %{HTTP_HOST} (www\.)?(.*)\.domen\.com$
RewriteCond %{REQUEST_URI} ^(.+)$
RewriteRule ^(.*)/([0-9]+)\.html$ index.php?sub2=%2&param=$1
Автор: Ryoga67
Дата сообщения: 22.11.2007 16:56
не в тот раздел пост разместил
Автор: Kopernik
Дата сообщения: 25.11.2007 02:57
В папке folder лежит файл .htaccess со след. правилом
RewriteBase /folder/
RewriteRule ^(.*)$ form.php?q=$1 [L,QSA]

При обращении к URL:
www.xxx.ru/folder/
В form.php передается параметр q=/folder/
и дальше в скрипте разбирается.

При обращении к URL
www.xxx.ru/folder (без слэша)
URL преобразуется в
www.xxx.ru/folder/?q=C:/Apache2/htdocs/folder
т.е. в параметр записывается путь к папке на сервере.
В чем дело во втором случае? Откуда берется этот параметр? И как сделать, чтобы все работало без слэша так же, как с ним?
Автор: Mavn
Дата сообщения: 25.11.2007 13:29
Необходимо чтобы при обращении site/index.php обрабывался например index_s.php но при этом index.php?object отобратывался стандартно.
помогите пожалуйста

crazyASD

Обычный редирект сделай с ttp://site.ru/forum/index.php?action=register на ttp://www.site.ru/component/option,com_smf/Itemid,174/action,register
Автор: afiget
Дата сообщения: 25.11.2007 13:31
Kopernik

Цитата:
При обращении к URL:
www.xxx.ru/folder/
В form.php передается параметр q=/folder/

Я в этом очень сомневаюсь. При указанных правилах у вас q="" - пустая строка.
Автор: Kopernik
Дата сообщения: 25.11.2007 15:15
2afiget
Спасибо. Нашел ошибку.
Автор: Autoshkatulka
Дата сообщения: 30.11.2007 21:23
Здравствуйте!
У меня почти та же ситуация сейчас, как та, что была у Pirates в первой половине данной темы. Там ему посоветовали сделать следующее:

dacuan

Цитата:
Pirates
Надо так:

Код:


Цитата: RewriteEngine on
RewriteCond %{REQUEST_URI} \.shtml?$
RewriteRule ^(.*)\.shtml?$ $1.php [L]




И в случае любых проблем с mod_rewrite в httpd.conf в описание хоста добавляешь строку RewriteLogLevel 9
и смотришь в файле логов, что не так происходит.
Автор: dacuan
Дата сообщения: 03.12.2007 14:20
Autoshkatulka
Что подразумевается под "страницами, с которых идет переадресация"?
Представленный код ничего не переадросовывает. Он просто подставляет вместо расширения shtml расширение php и выполняет скрипт и фактической переадресации с отправкой заголовков браузеру не происходит.
Автор: Autoshkatulka
Дата сообщения: 03.12.2007 19:01
dacuan

В общем, в итоге мне надо получить следующее:
есть страница в html, например эта - _http://www.autoshkatulka.ru/pddothercountry/index.shtml
это старая страница. В CMS создана идентичная страница - _http://www.autoshkatulka.ru/pddothercountry/index.html .

Мне нужно чтобы при переходе по shtml-ссылке из поисковой машины или там где ее опубликовали пользователи попадали на страницу из CMS, при этом робот поисковой машины получал 301 код от shtml-страницы .

Надеюсь, понятно пояснила...

P.S.: Я в этом совершенно ничего не понимаю, а сделать надо... Потому как кроме меня никто мне этого не сделает.
Автор: dacuan
Дата сообщения: 04.12.2007 10:18
Autoshkatulka
Так должно работать

Код:
RewriteRule (.*)\.shtml$ $1.html [L,R=301]
Автор: Autoshkatulka
Дата сообщения: 04.12.2007 11:16
dacuan

Сделала, как вы предложили, получила, что при переадресации со страницы _http://www.autoshkatulka.ru/pddothercountry/index.shtml в адресной строке отображается адрес _http://www.autoshkatulka.ru/usr/local/apache/htdocs/pddothercountry/index.html и в связи с этим страница с данными не отображается а отображается 404 ошибка...
Автор: dacuan
Дата сообщения: 04.12.2007 11:55
Autoshkatulka

Файл .htaccess должен содержать следующие строки:


Код:
RewriteEngine On
RewriteBase /

RewriteRule (.*)\.shtml$ $1.html [L,R=301]
Автор: Autoshkatulka
Дата сообщения: 05.12.2007 11:49
dacuan

при загрузке .shtml в итоге получаю пустую страницу со строкой по середине "Under construction"
Автор: dacuan
Дата сообщения: 05.12.2007 15:56
Autoshkatulka

Цитата:
при загрузке .shtml в итоге получаю пустую страницу со строкой по середине "Under construction"

А в логах что по этому поводу говорится?
Автор: Mavrun
Дата сообщения: 06.12.2007 15:17
Поможите плиз!

Код:
RewriteEngine on
Options +FollowSymlinks
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+[^/])$ $1/ [QSA]

RewriteRule ^about[/](.*).php[/]$ ./index.php?task=about&id=$1 [QSA]
Автор: zeor
Дата сообщения: 11.12.2007 09:47
Люди Помогите пожалуйста. Не получается виртуальный поддомен.

Имеется ссылки:
http://servername.ru/city/name1.html?id=param1
http://servername.ru/city/name2.html?id=param1

преобразовать их к виду:

http://name1.servername.ru?id=param1
http://name2.servername.ru?id=param1

Автор: farik7
Дата сообщения: 25.12.2007 12:52
Помогите пожайлуста.
Мне нужно с помощью mod_rewrite сделать следующее:

http://www.site.com.ua/ru/
Заменить на
http://www.site.com.ua/?lng.ru

и

http://www.site.com.ua/ru/index.php?p=news
на
http://www.site.com.ua/index.php?p=news&lng=ru

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445

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


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