Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Помогите составить инструкции для mod_rewrite / 6 сообщений из 6, страница 1 из 1
02.06.2014, 09:14
    #38658263
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить инструкции для mod_rewrite
Есть веб-сервер под апачем.
Помогите настроить следующую систему переадресаций:

1. Визиты на /guest/<скрипт><параметры> (<скрипт> и <параметры> опциональные, любой из них или оба могут отсутствовать) нужно переадресовывать на /<скрипт><параметры>.

2. Визиты на /<параметры> нужно передавать в скрипт /script.php<параметры>.

3. Визиты на /<скрипт><параметры> должны возвращать ошибку 403.

4. Все остальное должно возвращать ошибку 404.

Или другими словами: визиты на /guest/ и / должен обслуживать скрипт script.php, во всех остальных случаях (в том числе и если прямо указан скрипт /script.php) должна возвращаться ошибка 403 или 404.

________________________
Мы смотрим с оптимизмом...
...в оптический прицел.
...
Рейтинг: 0 / 0
02.06.2014, 09:47
    #38658291
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить инструкции для mod_rewrite
По ссылке из When not to use mod_rewrite получается, что вашу задачу может решать mod_alias .
...
Рейтинг: 0 / 0
02.06.2014, 10:16
    #38658321
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить инструкции для mod_rewrite
По описанию вроде бы похоже, но почему-то не работает.
В конфигурации виртуального хоста добавил строку:
Код: plaintext
Alias /site/www/guest /site/www
Захожу на / — открывается. Захожу на /guest или /guest/ — 404.
...
Рейтинг: 0 / 0
02.06.2014, 10:27
    #38658327
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить инструкции для mod_rewrite
Разобрался, мне не Alias нужен, а Redirect.
Есть одна небольшая проблемка.
Добавил следующие правила:
Код: plaintext
1.
2.
    Redirect /guest /
    Redirect /guest/ /
Захожу на http://site/guest/?p1=v1, передадресовывает на http://site//?p1=v1.
Можно ли от двойного слеша избавиться, не указывая в Redirect полный URL (хотелось бы использовать относительный)?
...
Рейтинг: 0 / 0
02.06.2014, 16:36
    #38658995
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить инструкции для mod_rewrite
Согласно правила "более частные - вперёд" надо поменять местами правила.
...
Рейтинг: 0 / 0
28.02.2015, 14:58
    #38891330
Alibek B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите составить инструкции для mod_rewrite
Возникла несколько более сложная задача.

Есть сайт с тремя точками входа: index.php, client.php и operator.php. Индексный файл по умолчанию (DirectoryIndex) — index.php.
Нужно преобразовывать пути в URI следующим образом:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
site/                        -> index.php
site/id                      -> index.php?id=$id
site/path/                   -> index.php?cat=$path
site/path/id                 -> index.php?id=$id&cat=$path
site/path1/path2/path3/      -> index.php?cat=$path (/path1/path2/path3)
site/path1/path2/id          -> index.php?id=$id&cat=$path
site/user/                   -> client.php
site/user/id                 -> client.php?id=$id
site/user/path/              -> client.php?cat=$path
site/user/path/id            -> client.php?id=$id&cat=$path
site/user/path1/path2/path3/ -> client.php?cat=$path
site/user/path1/path2/id     -> client.php?id=$id&cat=$path
site/oper/                   -> operator.php
site/oper/id                 -> operator.php?id=$id
site/oper/path/              -> operator.php?cat=$path
site/oper/path/id            -> operator.php?id=$id&cat=$path
site/oper/path1/path2/path3/ -> operator.php?cat=$path
site/oper/path1/path2/id     -> operator.php?id=$id&cat=$path


То есть путь передается в переменной cat, содержимое после последнего слеша передается в переменной $id и если подкаталог первого уровня равен user или oper, то они из пути удаляются и меняется точка входа.
Если в строке адреса были другие переменные (был GET-запрос с параметрами), они должны сохраниться.

Возможет также такой вариант, если его реализация не слишком сложна:
site/user -> user.site/ -> client.php
site/oper -> oper.site/ -> operator.php
...
Рейтинг: 0 / 0
Форумы / Unix-системы [игнор отключен] [закрыт для гостей] / Помогите составить инструкции для mod_rewrite / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]