Как удалить расширение файлов php из URL (ссылок) на сайте
Рекомендуемый хостинг:
В сегодняшней заметке я расскажу как можно быстро и легко убрать расширения php, cgi, html и любые другие из URL (из ссылок в адресной строке). Иногда такая потребность возникает, например, для придания ссылкам красоты и большего удобства для посетителей сайта.
К примеру из http://example.com/pagename.php нужно сделать http://example.com/pagename
Для этого достаточно в файл .htaccess, который находится в папке Вашего сайта добавить следующие строки:
RewriteEngine on
RewriteCond % !-d
RewriteCond %\.php -f
RewriteRule ^(.*)$ $1.php
При этом, разумеется, нужно при необходимости заменить «php» в строках 3 и 4 на нужное расширение.
После этого переход по ссылкам вида http://example.com/pagename начнёт происходить без ошибок.
Альтернативный вариант.
Наш читатель aleksey предложил ещё вот такой вариант:
Обратите внимание, может влиять на обработку POST-запросов отправляемых скриптам с расширением php! (спасибо S1lllver за важное уточнение)
Удалить расширение .html тоже несложно.
#example.com/page будет показывать контент из example.com/page.html
RewriteCond % !-f
RewriteCond % !-d
RewriteCond %.html -f
RewriteRule ^(.+)$ $1.html [L,QSA]
#301 редирект с example.com/page.html на example.com/page
RewriteCond % ^[A-Z]\ /.*\.html\ HTTP/
RewriteRule ^(.*)\.html$ /$1 [R=301,L]
Возможные проблемы
Если Ваш хостер использует связку nginx+Apache, то при попытке вышеописанным методом удалить расширения из ссылок на картинки, html-файлы и прочую статику будет отдаваться ошибка 404.
В этом случае Вам необходимо либо самостоятельно настроить сервер таким образом, чтобы исключить нужные типы файлов из списка статических файлов либо обратиться в службу технической поддержки с той же просьбой.
Post Views: 1 555
Прокомментировать Отменить комментарий
16 комментариев к “Как удалить расширение файлов php из URL (ссылок) на сайте”
Илья сказал:
Почему у вас на сайте нет фавикона? Вот как его сделать: создаём картинку в любом графическом редакторе шириной 16 пикселей и высотой 16 пикселей. Сохраняем и называем favicon.ico . Готово!
08.11.2015 в 19:08 · Ответить
admin сказал:
Лепить «абы что» не хочу, а вдумчиво заняться ни времени, ни энтузиазма.
Хотя Вы правы — без фавикона немного неудобно плюс в поисковой выдаче не очень видно.
Займусь.
08.11.2015 в 21:27
Неизвестно сказал:
Огромное спасибо
10.06.2016 в 00:23 · Ответить
Очень выручила информация об альтернативном варианте удаления расширения файлов php. Огромное вам и Алексею спасибо. Всего наилучшего!
30.09.2016 в 00:58 · Ответить
admin сказал:
Были рады вам помочь!
30.09.2016 в 09:30
Сергей сказал:
Возможно тупой вопрос, а поисковики как смотрят на это?
Для них адрес с .php и без, это не разные страницы?
Или это только в адресной строке браузеров что-то меняет.
Заранее благодарю
06.10.2016 в 00:25 · Ответить
admin сказал:
Формально адреса
сайт.ру/страница.пхп
сайт.ру/страница
это два разных адреса и если на них дублируется информация — это не совсем гуд с точки зрения поисковиков. То есть, адрес меняется и для поисковиков, и в адресной строке.
06.10.2016 в 09:09
ARRAYBOW сказал:
При выдаче кода 308 поисковик заменит ссылку с типом на без, только нужно чтобы роботы могли туда зайти.
11.07.2023 в 18:39
S1lllver сказал:
Альтернативный вариант не работает нормально , когда я его вставил в код своего сайта , изза него $_POST методы не отправлялись , используйте 1ый вариант.
21.10.2016 в 21:14 · Ответить
admin сказал:
Да, такое вполне может быть, если форма отправляет данные на чего-то-там.php.
Спасибо за замечание, добавил в заметку!
21.10.2016 в 22:43
Guest сказал:
Спасибо очень помогло
Огромное спасибо
06.11.2016 в 05:28 · Ответить
Vivian сказал:
Можно ли как-то убрать расширение файла в конце адреса без использования php ? Читал, что можно убрать .html с помощью файла .htaccess, но весь код, который я видел для убирания .html написан на php .
21.11.2016 в 05:11 · Ответить
admin сказал:
RewriteEngine on
RewriteCond % !-d
RewriteCond %\.html -f
RewriteRule ^(.*)$ $1.html Должно сработать (разумеется, если html не обрабатывается нжинксом как статический файл)
21.11.2016 в 17:19
Никита сказал:
Первый способ у меня вообще не работает, а со вторым я не знаю, что делать… Просто получается, что все хорошо обрабатывается, но у меня есть файл kotly.html и папка kotly с другими страницами и так получается, что этот файл не включается, т.к. он просто в поиске показывает папку
03.09.2017 в 03:51 · Ответить
admin сказал:
Ну так все правильно. Чтобы исправить — нужно или файл, или папку переименовать так, чтобы их имена не совпадали. Другого варианта нет.
NGINX+PHP5-FPM как убрать расширения .html и .php?
Здравствуйте! Подскажите, как убрать из адресной строки расширения файлов .html и .php? В секцию server<> добавил настройки:
location / < location ~ ^/index.html$ < if ($request_uri ~ ^/index.html) < rewrite ^.*$ / permanent; >> rewrite ^(/.*)\.php(\?.*)?$ $1$2 permanent; rewrite ^(/.*)\.html(\?.*)?$ $1$2 permanent; rewrite ^/(.*)/$ $1 permanent; try_files $uri.php $uri.html $uri/ $uri =404; location ~ \.php$ < include fastcgi_params; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; >>
В итоге убраны расширения .html файлов, работает редирект с главной страницы на корень сайта, а вот расширение .php никуда не исчезает. Что у меня неправильно?

Servis-engineer
18.11.18 22:18:16 MSK
А как вы собираетесь выполнять php-код, если вы пытаетесь редиректить php url-ки (301-м кодом) на url-ки без расширения .php? А потом используете «location ~ \.php$ . ».
Чего-то у вас с логикой не того.
Конфигурация, которую вы привели — это вообще бред какой-то, в том числе и с точки зрения SEO. Вы бы объяснили, какая у вас реально структура url-к сайта и используете ли вы какой-нибудь PHP-фреймворк. Тогда будут шансы получить какой-то конструктивный совет.
vinvlad ★★
( 19.11.18 07:34:05 MSK )
Посмотри форум или документацию своего фреймворка или CMS, там обычно есть дефолтный конфиг для nginx с необходимыми нюансами.
У тебя не понятно как это должно работать, через роутинг и одну точку входа или через 100500 файлов разных.
BaBL ★★★★★
( 19.11.18 07:49:09 MSK )
. извиняюсь, не заметил try_files $uri.php.
Вынесите rewrite-правила наружу — в server-блок. Просто для php url-к у вас сразу цепляется внутренний location-блок и rewrite-правила в корневом location игнорируются.
vinvlad ★★
( 19.11.18 11:05:50 MSK )
. только тут есть такой момент: после редиректа сработает try-директива, которая просто вернет текст php-скрипта. Это явно не то, что тебе нужно )
Так что, c php нужно выкручиваться как-то по другому.
Как убрать расширение html (htaccess)?
![]()
Wizi
04.09.2020 03:35 1 054
Hi!
Как убрать расширение html (htaccess)?
Не для всех, а конкретно для некоторых.
Допустим: siteточкаru/test.html на siteточкаru/test
Ответы на пост (2) Написать ответ
06.09.2020 00:17
зачем убирать html?
на адресс siteточкаru/test можно нагенерить страниц и опустить сайт, вроде подробно писала на sinonimov.ru текст и страницу уже не помню, посмотрите поиск по сайту. Для теста бесплатный онлайн синонимайзер — напишите мне!
06.09.2020 02:07
Не могли бы вы найти на этом сайте эту тему. У меня не получилось. Лично я согласен с вами по этому вопросу, но мне нужны убедительные доводы для оппонентов.
Форум
Для статических страниц: размещайте каждую страницу в отдельном разделе.
Для динамических страниц: используйте ЧПУ.
«Да не могут же они!»
Сообщений: 419 Баллов: 71 Регистрация: 31.07.2008
Компания Episoft
09.10.2012 22:30:32
Можно и для статики тоже ЧПУ настроить
Постоянный посетитель
Сообщений: 353 Баллов: 28 Регистрация: 05.02.2012
10.10.2012 14:41:26
Возможно вам поможет данное решение
Пишите по доработкам: my.grebnev@gmail.com
Постоянный посетитель
Сообщений: 319 Баллов: 25 Регистрация: 26.08.2010
10.10.2012 15:03:54
Чтобы любая страница с .php в конце отвечала по тому же адресу с .html в конце, добавьте в urlrewrite.php код:
array( "CONDITION" => "#(.+?)\\.html(.*)#", "RULE" => "$1.php$2", "ID" => "", "PATH" => "", ),
Но это не означает, что все страниц станут автоматически с .html в конце, вам необходимо редактировать настройки инфоблоков и компонентов.
Страницы: 1
Центр поддержки
Продукты
Управление сайтом
Битрикс24
Интернет-магазин + CRM
Решения
Для интернет-магазинов
Каталог готовых решений
Внедрение
Выбрать партнера
Проверить партнера
Стать партнером
1С-Битрикс http://www.1c-bitrix.ru Общие вопросы info@1c-bitrix.ru Приобретение и лицензирование продуктов : sales@1c-bitrix.ru Маркетинг/мероприятия/PR marketing@1c-bitrix.ru Партнерская программа partners@1c-bitrix.ru Мы работаем с 10:00 до 19:00 по московскому времени. Офис в Москве 127287 Россия Московская область Москва 2-я Хуторская улица дом 38А строение 9 Офис в Калининграде +7 (4012) 51-05-64 Офис в Калининграде 236001 Россия Калининградская область Калининград Московский проспект 261 Офис в Киеве ukraine@1c-bitrix.ru Телефон в Киеве +3 (8044)221-55-33 Офис в Киеве 01033 Украина Калининградская область Киев улица Шота Руставели 39/41 офис 1507

© 2001-2023 «Битрикс», «1С-Битрикс». Работает на 1С-Битрикс: Управление сайтом. Политика конфиденциальности
