Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > mod_rewrite связка с файлами


Автор: Vardoulacha 5.12.2011, 07:38
Вообщем вот такая трабла, есть правило

# http://domain.ru/page_news.php
# http://domain.ru/news
RewriteRule ^([^/]*)$ ./page_$1.php [L]

т.е. указывая имя папки подгружается нужный файл, но если такого файла нет, как тогда это узнать и перекинуть на error.php чтобы показать ошибку 404?

там после этого есть еще другие правила, там идет поиск нужных слов в запросе и переброс на другие файлы которые заранее известны

если указать несуществующий файл то выдает 500 ошибку с множественной переадресацией (ну это видно из-за продолжения выполнения всего htaccess и всех правил)

Автор: WolfAlone 5.12.2011, 16:31
Код

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d


Эти строки означают, что правило будет работать только в том случае, если такого файла или директории нет.

Думаю, Вас это натолкнёт на правильную мысль. Более подробно ответить не могу, т.к. я к сожалению не специалист по Apache.

Автор: Vardoulacha 5.12.2011, 17:00
оооо... дельная мысль пойду пробовать

Автор: Vardoulacha 5.12.2011, 17:27
мдааа нет не прокатит, дело в том что %{REQUEST_FILENAME} хранит полный путь к файлу, а мне нужно в этот путь еще вклинить "page_" перед тем запросом который передали и путем до корня, и вот это как раз похоже не сделать средствами .htaccess

Автор: WolfAlone 5.12.2011, 17:33
Не могу быть уверен точно, но мне кажется, что это всё-таки можно сделать средствами .htaccess.

Прикрепляю к посту первый попавшийся мне на глаза файл .htaccess который как раз решает примерно подобную Вашей задачу.

Файл был любезно предоставлен авторами PHP-Framework'a "Kohana 3.2".

Если Вы более подробно опишите задачу (зачем так делать?), и инструменты для её решения - возможно я смогу Вам помочь ещё чем-то. Например, в большинстве фреймворков (PHP) есть такая штука как "Роутинг". Или, например, можно сделать какой-нибудь PHP-файл, который будет принимать все запросы и либо переадресовывать человека на нужный файл, либо на страницу 404...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)