Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
23.08.2014, 23:38
|
|||
|---|---|---|---|
Помогите с rewrite для .htaccess |
|||
|
#18+
Приветствую. Пытаюсь написать универсальный .htaccess для своего мини-движка на PHP, но получается плохо :) Например, не работает если запуск скрипта идет из под-папки. Текущий код: RewriteCond %{HTTP_HOST} ^localhost:8081/_ul/$ [NC] RewriteRule ^(.*)$ http://localhost:8081/_ul/$1 [R=302,L] RewriteEngine On # Set current directory as page root. RewriteBase /_ul # Remove slash at the end of url # RewriteRule ^(.*)/$ $1 [R=301,L] # Makes sure that files that are existing will not get a slash added RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !^/(de-admin|de-themes) RewriteRule ^([a-zA-Z0-9]+)/$ /$1 [L,QSA] RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([a-zA-Z0-9]+) RewriteRule ^([a-zA-Z0-9]+)$ /_ul/index.php?action=%1 [L,QSA] #ErrorDocument 403 /_ul/index.php?action=403 #ErrorDocument 404 /_ul/index.php?action=404 Чего пытаюсь достичь: 1. Чтобы все /bla/ приводились к /bla 2. Чтобы de-admin и de-themes не rewrite'ились. Так как в первом случае rewrite не нужен, а во втором случае не феншуй для подключения стилей/скриптов. 3. Если всё оке, переводить на /_ul/index.php?action=содержимое Чего бы хотелось в дополнение: 1. Сайт-движок может запускаться как в под-папках, так и в корне. Поэтому, хотелось бы только в одном месте установить что-то типа RewriteBase, а в самих регулярках ничего не менять. Искал можно ли в .htaccess использовать переменные (как я понял, в htaccess можно только переменные окружения использовать, а хотелось бы без вмешательства в сервер - не всегда к нему есть доступ), чтобы делать типа: SetEnv SITEURL http://bla.ru ... ErrorDocument 404 %{SITEURL}/index.php?action=404 Но ни один из вариантов не заработал которые пробовал, видимо либо делаю не так, либо не дано. Возможно ли вообще? 2. Хотелось бы, чтобы лишь первый action учитывался, а всё что после него превращалось в доп. содержимое без строгой привязки к количеству (чтобы доп. параметры не приходилось вручную вписывать в htaccess). Например, подали в браузере: /bla/1/2/3/4/5 ---> index.php?action=bla&1&2&3&4&5, или /bla/1/2/3=qwerty/4/5/6/7 --> index.php?action=bla&1&2&3=qwerty&4&5&6&7, при этом чтобы с точки зрения htaccess это например была бы одна универсальная строка, а то была ситуация, когда приходилось такое лепить: RewriteRule ^(doctors*)/$ index.php?action=doctors [L] RewriteRule ^(doctors*)/([^/]*)/$ index.php?action=doctors&id=$2 [L] И следовательно чем больше параметров добавлялось, тем больше добавлялось дубликатов как в примере выше. Был бы благодарен если бы кто-нибудь помог готовым скриптом, а то наплевался уже с этим mod rewrite :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.08.2014, 10:08
|
|||
|---|---|---|---|
Помогите с rewrite для .htaccess |
|||
|
#18+
D.K., сделай как в yii :) там есть продвинутый класс роутинга, а в htaccess просто перенаправление в index.php. в htaccess можешь просто разбирать строку как action/[всё остальное] (получится типа /myAct/param1/param2 => /index.php?action=myAct¶ms=param1/param2). По экшену в index.php загружать нужный файл (модуль), а "всё остальное" разбирать регулярками на нужные параметры (с использованием именованных групп для удобства). В общем такой механизм написать намного проще чем то, что ты пытаешься сделать:) P.S. В последнее время пришёл к выводу, что модуль должен отвечать за свои внутренние линки и параметры сам... это в разы упрощает перенос модуля с одного сайта на другой (остаётся всего лишь добавить сам модуль в роутинг без заморочек что у него внутри и как это работает). Если у тебя такая же структура, то предлагаю то самое "всё остальное" разбирать не в index.php или htaccess, а в самом файле модуля неким специальным методом (предопределённым для всех модулей через абстрактный унаследованный класс, ну или просто оглавлённым в реализуемом интерфейсе) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
24.08.2014, 10:11
|
|||
|---|---|---|---|
Помогите с rewrite для .htaccess |
|||
|
#18+
hotfix. Форум ¶ms заменил на ¶ms прошу строку "получится типа /myAct/param1/param2 => /index.php?action=myAct¶ms=param1/param2" понимать как "получится типа /myAct/param1/param2 => /index.php?action=myAct¶ms=param1/param2" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=23&tablet=1&tid=1462499]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
69ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
2ms |
| others: | 250ms |
| total: | 409ms |

| 0 / 0 |
