The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Редирект на URL и примеры использования mod_rewrite (web apache redirect mod_rewrite)"
Отправлено Андрей, 21-Янв-08 12:23 
Вопрос следующий.
Написали свою CMS.
Работает так, что все запросы идут на index.php, где он подгрудает нужный модуль обработки и вызывает нужный шаблон SMARTY.

Заказчик попросил сделать прсевдостатику, причём так, чтоб все страницы с его оригинального сайта сохранились (PR 3 у него там...)

В общем, проблема такая:
Обычные страницы вызываеются таким запросом - /?page=<название страницы>
Есть раздел СТАТЬИ, которые вызываются - /?page=articles&id=<код статьи, или название страницы>
Так вот, мне надо написать следующие в .htaccess:
При обращении адреса "<A-Za-z0-9+>.html" проверялось, существует ли URL - ?page=<название страницы>.
Если не существует (а мой индекс возвращает ошибку 404 при этом), то пробует запрос вида /?page=articles&id=<код статьи, или название страницы>.
С этим модулем я не имею большого опрыта работы, могу делать только простые вещи.
Но вот что придумал по примерам и справочникам:

RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^.htaccess$ - [F]
#Проверяю, существует ли такой URL
RewriteCond   ^(.*)$ -U
# Если да, то обращается по такому запросу и прерываем
RewriteRule ^([A-Za-z0-9]+).html$ ?page=$1 [L]
# Если предыдущее условие не выполнилось, обращаемся сюда.
RewriteRule ^([A-Za-z0-9]+).html$ ?page=article&id=$1 [L]
# Это уже не важно, проверил, работает нормально...
RewriteRule ^news-([A-Za-z0-9]+).html$ ?page=news&p=$1 [L]
RewriteRule ^news-([A-Za-z0-9]+)-([A-Za-z0-9]+).html$ ?page=read_news&news_id=$1&p=$2 [L]


Как я написал, нижняя часть работает нормально, а вот верхняя - не совсем.
По справочнику я проверил, что "-F" проверяем наличие файла непосредственно на сервере с таким названием.
А "-U" проверяет работоспособность URL. Правда, я не до конца уверен, что я правильно понял назначение этого флага.

Пожалуйста, кто сталкивался, или есть какие-то мысли, подскажите как сделать правильно.

Жду ответа.
Заранее, спасибо.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру