Форум программистов, компьютерный форум, киберфорум
Наши страницы
Apache, htaccess
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/6: Рейтинг темы: голосов - 6, средняя оценка - 5.00
slava739
0 / 0 / 0
Регистрация: 11.04.2011
Сообщений: 12
1

mod_rewrite: /catalog/... -> catalog.php

11.04.2011, 10:56. Просмотров 1154. Ответов 4
Метки нет (Все метки)

Добрый день!

Подскажите, как написать create mod_rewrite rule, что бы все запросы вида /catalog/... уходили бы на catalog.php


Спасибо"

Добавлено через 46 минут
Нашел вот такой вариант:

RewriteEngine On
Options +FollowSymlinks
RewriteBase /
RewriteRule ^catalog/([A-z0-9]{0,})/?$ parse.php?p[1]=$1 [QSA,L]
RewriteRule ^catalog/([A-z0-9]{0,})/([A-z0-9]{0,})/?$ catalog.php?p[1]=$1&p[2]=$2 [QSA,L]

Но, после /catalog/ может быть еще 4 уровня папок. Можно ли это написать одной строкой вместо 4х?
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.04.2011, 10:56
Ответы с готовыми решениями:

Mod_rewrite, Как изменить вид ссылки типа index.php?cat=php
ссылка получается вот такая: mysite.loc/index.php?cat=PHP&article=obrabotka_formy как это...

переадресация на index.php средствами mod_rewrite
Hi, All! задача: пропускать все запросы через index.php кроме некоторых выделенных директорий...

mod_rewrite: все на index.php без www и index.php
Приветствую, уважаемые форумчане! :) Подскажите, пожалуйста, как мне реализовать следующую схему в...

Notice: Undefined index: rating in Z:\home\ss1s.com\www\catalog\model\catalog\product.php on line 22
Здравствуйте,помогите исправить ошибку Notice: Undefined index: rating in...

Как убрать вывод компонента catalog.section.list в компоненте catalog.section
Если нажать на первый уровень каталога рис 1 появляется весь товары этого уровня. Но и выводятся...

4
Vovan-VE
13175 / 6562 / 1039
Регистрация: 10.01.2008
Сообщений: 15,069
11.04.2011, 16:47 2
Код
RewriteEngine on
RewriteBase /
RewriteRule ^catalog(/.*)$ /catalog.php [L]
PHP
1
echo $_SERVER['REQUEST_URI']; # /catalog/foo/bar
1
slava739
0 / 0 / 0
Регистрация: 11.04.2011
Сообщений: 12
11.04.2011, 19:37  [ТС] 3
Спасибо!

А как, что бы переложить разбор строки с PHP на Apach, сделать так, что бы все папки после /catalog/ переходили как параметры в скрипт:

/catalog/alpha/beta/gamma -> parse.php?p[1]=alpha&p[2]=beta&p[3]=gamma

Я пытался это сделать в моем примере, но для каждого уровня вложенности нужна была своя строка. Можно ли как-то обойтись одной?
0
Vovan-VE
13175 / 6562 / 1039
Регистрация: 10.01.2008
Сообщений: 15,069
12.04.2011, 14:51 4
Цитата Сообщение от slava739 Посмотреть сообщение
parse.php?p[1]=alpha&p[2]=beta&p[3]=gamma
Зачем в $_GET что-то городить, когда нам оригинаьный uri уже узвестен в $_SERVER['REQUEST_URI']. Отрезаете от него "?query", если есть, затем по слешам делите в массив и то же само получаете.
PHP
1
2
3
4
5
6
7
$path = $_SERVER['REQUEST_URI'];
$p = strpos($path, '?');
if ($p !== false) $path = substr($path, 0, $p);
$path = trim($path, '/');
$path = $path != '' ? explode('/', $path) : array();
 
print_r($path);
0
slava739
0 / 0 / 0
Регистрация: 11.04.2011
Сообщений: 12
13.04.2011, 06:29  [ТС] 5
Цитата Сообщение от Vovan-VE Посмотреть сообщение
Зачем в $_GET что-то городить, когда нам оригинаьный uri уже узвестен в $_SERVER['REQUEST_URI']. Отрезаете от него "?query", если есть, затем по слешам делите в массив и то же само получаете.
PHP
1
2
3
4
5
6
7
$path = $_SERVER['REQUEST_URI'];
$p = strpos($path, '?');
if ($p !== false) $path = substr($path, 0, $p);
$path = trim($path, '/');
$path = $path != '' ? explode('/', $path) : array();
 
print_r($path);
Исхожу из того, что обработка правила в Apache существенно быстрее, чем разбор строк в PHP
0
13.04.2011, 06:29
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.04.2011, 06:29

Как сделать из www.site.ru/catalog/products?category_id=2222 сделать www.site.ru/catalog/cat2222
Какие строчки надо списать в .htaccess для этого?

Mysqli_fetch_row() expects parameter 1 to be mysqli_result, boolean given in Z:\home\localhost\www\catalog\functions.php
не пойму в чем проблема, все делал по уроку, вот код: catalog.php $ids = cats_id($categories,...

Parse error: syntax error, unexpected T_ELSE in /home/figaces6/public_html/catalog.php on line 28
вот добавил одно условие и вылезла син.ошибка т.к. я с телефона уже около часа не могу её найти ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru