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

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

Автор: substrackto
Дата сообщения: 29.12.2009 13:32
molekyla
Мне кажется, что к мод_р это никакого отношения не имеет, вам нужно править пхп где преобразовываются бб теги в хтмл.
Если я правильно понял: [_url]http://site.com[/url] -> <a href="/click?http://site.com" />
Автор: israel_rider
Дата сообщения: 12.01.2010 21:34
Маленький вопрос, плиз. Что означает
$1
? Везде написано, что $ это конец строки шаблона. Тогда что же такое 1? Количество повторений? Типа - шаблон только один раз может повториться?
Привожу целиком всю строчку -
RewriteRule ^(.*)\.htm$ $1.php    [NC]
Автор: andead
Дата сообщения: 12.01.2010 21:49
"$1.php" это уже не регулярное выражение, $1 это первая найденная подстрока соответствующая — (.*)
Автор: israel_rider
Дата сообщения: 12.01.2010 21:57
Спасибо!
Автор: Tstf
Дата сообщения: 23.01.2010 09:23
Добрый день. Вопрос слеюущий.

есть ЧПУ вида
http://localhost/fmnokia_8/goods/mobile/1/1/norm/all

хочу передать переменную ещё
brand[]

можно ли записать как-то так

http://localhost/fmnokia_8/goods/mobile/1/1/norm/all/~brand[]=6 ?
Просто когда так записываю, то вообще 404 ошибка.


Для чпу

RewriteRule ^goods/([a-zA-Z_-]*)/([0-9]*)/([0-9]*)/([a-zA-Z_-]*)/([a-zA-Z_-]*)(/?)+$ index.php?do=goods&id_s=$1&st=$2&page=$3&view=4&show=$5 [L]

Спасибо.
Автор: Tstf
Дата сообщения: 26.01.2010 21:05
должно же быть решение) Я уже неделю борюсь :>
Автор: Cheery
Дата сообщения: 26.01.2010 21:08
Tstf
я же вам написал в первой теме.. экранируйте
либо включите логирование преобразования запроса и смотрите
Автор: Tstf
Дата сообщения: 27.01.2010 16:37
экранизирование не спасается... во-первых надо определиться что писать после ЧПУ

http://localhost/fmnokia_8/goods/mobile/1/1/norm/all/~brand=6

знак ~ ?

но даже с этим знаком переменная $_REQUEST['brand'] пуста



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

что за логирование?)
Автор: Cheery
Дата сообщения: 27.01.2010 19:30
Tstf

Цитата:
что за логирование?)

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewritelog

Цитата:
знак ~ ?

нет, скобки []

Цитата:
но даже с этим знаком переменная $_REQUEST['brand'] пуста

а почему она должна определиться???
Автор: Kas07
Дата сообщения: 27.01.2010 20:04
Помогите, плиз. Второй вечер мучаюсь.

Оригинальный урл http://www.qqqqqq.com/new_site/?s=40&brand=7
в ЧПУ чтоб был http://www.qqqqqq.com/new_site/section40/?brand=7

Правило RewriteRule ^section([^/]*)/?brand=([^/]*)$ ?s=$1&brand=$2 [L] не работает
Автор: Cheery
Дата сообщения: 27.01.2010 20:42
Kas07

Цитата:
RewriteRule ^section([^/]*)/?brand=([^/]*)$

query не обабатывается так.. доп rewritecond на %{QUERY_STRING}
что то вида
RewriteCond %{QUERY_STRING} ^s=([0-9]+)&brand=([0-9]+)$
RewriteRule ^new_site /new_site/section%1/?brand=%2 [L]

или вам наоборот?
RewriteCond %{QUERY_STRING} ^brand=([0-9]+)$
RewriteRule ^new_site/section([0-9]+)/$ /new_site/?s=$1&brand=%1 [L]
Автор: usertum
Дата сообщения: 29.01.2010 20:43
Подскажите пожалуйста по редиректу:

Redirect /sys/user.php?sid=ЛЮБОЕ ЗНАЧЕНИЕ&r=500 /sus/user.php

Как верно прописать что sid может быть любым значением... то есть что бы если есть &r=500 то переключать на url /sus/user.php
Автор: Cheery
Дата сообщения: 29.01.2010 20:50
usertum

Цитата:
Как верно прописать что sid может быть любым значением... то есть что бы если есть &r=500 то переключать на url /sus/user.php

как я написал выше.
RewriteCond %{QUERY_STRING} r=500$
RewriteRule ^sys/user.php /sus/user.php [L]
может понадобятся изменения.. попробуйте
порядок на положение r тоже влияет в данной записи
Автор: usertum
Дата сообщения: 29.01.2010 21:04
Cheery не получилось. Нужно что бы при любом значении sid если есть &r=500 в строке, происходило переключение на url /sus/user.php

Добавлено:
sys/user.php /sys/user.php [L] вот так у меня, ошибся выше.
Автор: Cheery
Дата сообщения: 29.01.2010 21:24
usertum

Цитата:
sys/user.php /sys/user.php [L] вот так у меня, ошибся выше.

простите, а в чем смысл пересылать на тот же скрипт??
Автор: usertum
Дата сообщения: 29.01.2010 21:30
Если есть r=500 то нужно переключить... модифицирую сторонний скрипт и нужно отключить некоторые опции, это самый быстрый вариант.
Автор: Cheery
Дата сообщения: 29.01.2010 21:41

Цитата:
Если есть r=500 то нужно переключить... модифицирую сторонний скрипт и нужно отключить некоторые опции, это самый быстрый вариант.


еще раз.. вы пересылаете на тот же скрипт - зачем???
Автор: usertum
Дата сообщения: 29.01.2010 21:52
модифицирую сторонний скрипт и нужно отключить некоторые опции, это самый быстрый вариант без модификаций системы.
Автор: Cheery
Дата сообщения: 29.01.2010 21:56
usertum

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

это глупо, если честно..
добавьте одной строкой в скрипт в самом начале
if(isset($_GET['r'])&&$_GET['r']=='500') unset($_GET['r']);
этой же цели добиваетесь?

я все равно не понимаю что вы пытаетесь сделать.
Автор: usertum
Дата сообщения: 29.01.2010 22:02
А как через .htaccess это сделать?
Автор: 2andr
Дата сообщения: 30.01.2010 15:04
Помогите понять
есть урлы
mysite.ru/index.php?do=company
mysite.ru/index.php?do=service
mysite.ru/index.php?do=service&action=parts
mysite.ru/index.php?do=service&action=to
mysite.ru/index.php?do=service&action=price
...

хочется получить урлы
mysite.ru/company в то числе mysite.ru/company/
mysite.ru/service в том числе mysite.ru/service/
mysite.ru/service/parts ......
mysite.ru/service/to ......
mysite.ru/service/price .....
...

возможно ли такое с mod_rewrite
Автор: mv4u
Дата сообщения: 09.02.2010 00:46
помогите реализовать следующую вещь

http://forum.ru-board.com/topic.cgi?forum=8&topic=36180

Автор: Cheery
Дата сообщения: 09.02.2010 01:19
2andr

Цитата:
возможно ли такое с mod_rewrite

возможно.. тему пробовали просмотреть - куча примеров?

mv4u
дописываете RewriteCond для %{REMOTE_ADDR}

RewriteCond %{REMOTE_ADDR} ^12\.34\.56\.78$ [OR]
RewriteCond %{REMOTE_ADDR} ^87\.65\.43\.21$
и так далее..
Автор: bazzjr
Дата сообщения: 09.02.2010 07:09
Всем привет.

У меня следующий вопрос:

Есть сайт, на сайте стоит .htaccess, на сайте работают ссылки вида /product/1/2 а также работают ссылки вида /product.php?id=1&cat=2.

Как сделать так, чтобы на сайте работали только ссылки вида /product/1/2 а все остальные ссылки с (*.php) не работали(ну например ссылались на 404) ???

Вообще это общий вопрос, касающийся логики работы mod_rewrite...
Автор: Cheery
Дата сообщения: 09.02.2010 23:12
bazzjr

Цитата:
а все остальные ссылки с (*.php) не работали(ну например ссылались на 404) ???

проверяйте в скрипте $_SERVER['REQUEST_URI'] или аналогичное.
к mod_rewrite не имеет никакого отношения
Автор: elka82
Дата сообщения: 10.02.2010 11:44
Есть такой модуль переадресации для internet explorer. Лежит в этой папке (qqq), но вот почему-то переадресация не срабатывает.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_USER_AGENT} IE
RewriteCond %{REQUEST_FILENAME} /http://192.168.1.129/mon/qqq/$
RewriteRule ^(.*) http://do.pguas.local/mon/qqq/index_ie.html?% {QUERY_STRING} [L]
</IfModule>


Сделала еще вот такой вариант:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase http://192.168.1.129/mon/qqq
RewriteCond %{HTTP_USER_AGENT} Microsoft Internet Explorer|MSIE|IE [NC]
RewriteRule ^index.html$ index_ie.html [R]
</IfModule>

Остается все по-прежнему. Что делать?
Автор: bazzjr
Дата сообщения: 10.02.2010 13:02

Цитата:
проверяйте в скрипте $_SERVER['REQUEST_URI'] или аналогичное.


А как же проверка в правилах ".php" на содержание в адресной строке?

И непонятно как использовать $_SERVER['REQUEST_URI'], где и когда?
Автор: Cheery
Дата сообщения: 10.02.2010 22:50
bazzjr

Цитата:
И непонятно как использовать $_SERVER['REQUEST_URI'], где и когда?

в самом php скрипте.

Цитата:
А как же проверка в правилах ".php" на содержание в адресной строке?

смысл?

Добавлено:
elka82

Цитата:
Остается все по-прежнему. Что делать?

включить логирование для mod_rewrite и посмотреть обработку.
а еще проще - посмотреть в логах доступа какой же User-Agent получается ваш сервер и попадает ли он под правило

Цитата:
RewriteCond %{HTTP_USER_AGENT} Microsoft Internet Explorer|MSIE|IE [NC]

Автор: usertum
Дата сообщения: 11.02.2010 22:50
RewriteRule ^none/index.php Как вот сюда автоматически подставлять SERVER_NAME? /index.php [L]
Автор: Cheery
Дата сообщения: 11.02.2010 23:15
usertum
куда подставлять?? вам он также доступен как и выше через
%{SERVER_NAME}

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445

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


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