DizeL
Новичок
Псевдостатика через MOD_ReWrite
Всем доброго времени...
Посмотрел по поиску, все сюда пишут вопросы по этому модулю...
Вопрос следующий.
Написали свою CMS.
Работает так, что все запросы идут на index.php, где он подгрудает нужный модуль обработки и вызывает нужный шаблон SMARTY.
Заказчик попросил сделать прсевдостатику, причём так, чтоб все страницы с его оригинального сайта сохранились (PR 3 у него там...)
В общем, проблема такая:
Обычные страницы вызываеются таким запросом - /?page=<название страницы>
Есть раздел СТАТЬИ, которые вызываются - /?page=articles&id=<код статьи, или название страницы>
Так вот, мне надо написать следующие в .htaccess:
При обращении адреса "<A-Za-z0-9+>.html" проверялось, существует ли URL - ?page=<название страницы>.
Если не существует (а мой индекс возвращает ошибку 404 при этом), то пробует запрос вида /?page=articles&id=<код статьи, или название страницы>.
С этим модулем я не имею большого опрыта работы, могу делать только простые вещи.
Но вот что придумал по примерам и справочникам:
Как я написал, нижняя часть работает нормально, а вот верхняя - не совсем.
По справочнику я проверил, что "-F" проверяем наличие файла непосредственно на сервере с таким названием.
А "-U" проверяет работоспособность URL. Правда, я не до конца уверен, что я правильно понял назначение этого флага.
Пожалуйста, кто сталкивался, или есть какие-то мысли, подскажите как сделать правильно.
Жду ответа.
Заранее, спасибо.
Всем доброго времени...
Посмотрел по поиску, все сюда пишут вопросы по этому модулю...
Вопрос следующий.
Написали свою CMS.
Работает так, что все запросы идут на index.php, где он подгрудает нужный модуль обработки и вызывает нужный шаблон SMARTY.
Заказчик попросил сделать прсевдостатику, причём так, чтоб все страницы с его оригинального сайта сохранились (PR 3 у него там...)
В общем, проблема такая:
Обычные страницы вызываеются таким запросом - /?page=<название страницы>
Есть раздел СТАТЬИ, которые вызываются - /?page=articles&id=<код статьи, или название страницы>
Так вот, мне надо написать следующие в .htaccess:
При обращении адреса "<A-Za-z0-9+>.html" проверялось, существует ли URL - ?page=<название страницы>.
Если не существует (а мой индекс возвращает ошибку 404 при этом), то пробует запрос вида /?page=articles&id=<код статьи, или название страницы>.
С этим модулем я не имею большого опрыта работы, могу делать только простые вещи.
Но вот что придумал по примерам и справочникам:
PHP:
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. Правда, я не до конца уверен, что я правильно понял назначение этого флага.
Пожалуйста, кто сталкивался, или есть какие-то мысли, подскажите как сделать правильно.
Жду ответа.
Заранее, спасибо.