@rinaz22

Как скрыть формат страницы в url, а в php нет?

Всем привет! Хочу скрыть формат страницы, например вместо /index.php должно получится /index
Для этого раньше обошелся без htaccess, средствами php, написал скрипт который проверяет есть ли файл с форматом php в нужных директивах. Т.е. берет url (например index) и проверяет:
$page = "index";
if (file_exists("page/$page.php"))
	include "page/$page.php";

Работает хорошо, но возник проблема со шрифтами. Когда указываю путь до шрифта, /fonts/font1.ttf шрифт не находится. На сколько я понял, это из-за моего скрипта, т.е. он вставляет .php в конец url. Хотя картинки открываются(img/img1.png), а в скрипте для картинок я ничего не указал.
Поэтому начал искать другой способ скрыть формат страницы.
Как скрыть формат в url, а при использовании $_SERVER['REQUEST_URI'] он показал с форматом(index.php)?
  • Вопрос задан
  • 417 просмотров
Решения вопроса 1
@rinaz22 Автор вопроса
Решение:
В htaccess указал след.:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php

Теперь запрос делается только если файла не существует по указанному пути. А чтобы случайно не натыкались на прямую ссылку страницы(page/index.php) указал ошибку 404:
RedirectMatch 404 ^/page/.*
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@granty
rinaz22, решение правильное, только при этом надо грамотно сделать index.php, поскольку "всё не найденное" у вас заворачивается на него, включая картикни, скрипты, стили и тп.
Ваш index.php должен быстро распознавать и "отфутболивать" все некорректные url.

Если кто-то разместит где-нибудь на посещаемой странице < img src='ваш_сайт/несуществующая_картинка.jpg'>, то будет постоянно дёргаться ваш index.php (тоже самое будет и с вашими несуществующими картинками). Если index.php подключает кучу других модулей, и исполняется достаточно долго - ваш сайт ляжет.

И имейте ввиду, что роботы Google регулярно запрашивают url вида "всякая_абракадабра.html", ожидая получить на них 404 Not found. У вас такие url будет перехватывать index.php, неплохо, чтобы он отдавал код 404.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы