Артём Мáлков

Убираем .html, .php и .htm в конце URL-адресов на Apache/Nginx

25 июн26 комм

Часто слышу, что сеошники советуют убирать окончания .html, .php и .htm в адресах ваших сайтов – якобы, это негативно влияет на продвижение. Кто-то же говорит, что это просто визуально добавляет адресу лишний мусор.

В любом случае, убирать или оставлять эти окончания, решать вам, я же покажу, как это реализовать на статичном сайте (то есть сайте, находящемся не на CMS). Почему только на статичном? Потому что для различных CMS это реализовывается разными методами, о которых я также расскажу в последующих статьях.

Не утверждаю на 100%, что этот метод не будет работать на какой-то из CMS – пробуйте и о результатах отписывайтесь в комментариях.

Убираем .html, .php и .htm на Apache

Как вы знаете, в Apache существует файл .htaccess, который содержит в себе набор настроек и конфигураций сервера. С его помощью мы и будем убирать ненужные нам окончания.

1. Подключитесь к сайту по FTP и в корне сайта найдите файл .htaccess. Откройте его. Если такой файл отсутствует – создайте.

2. Найдите строчку, содержащую:

RewriteEngine On

Сразу после нее вставьте следующие правила.

Если вам необходимо убрать .php:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)$ $1.php [NC,L]

Если вам необходимо убрать .html:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)$ $1.html [NC,L]

Если вам необходимо убрать .htm:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^.]+)$ $1.htm [NC,L]

Если строчка «RewriteEngine On» отсутствует в файле – добавьте ее в самое начало.

После чего сохраните изменения и отправьте файл обратно на сайт. Если раньше адреса на вашем сайте были вида

https://www.pandoge.com/page.php

то теперь вы можете открыть эту страницу по адресу:

https://www.pandoge.com/page

Убираем .html, .php и .htm на Nginx

1. Для того чтобы подобную настройку произвести в Nginx, откройте файл конфигурации по адресу:

/etc/nginx/nginx.conf

в FTP (если вам позволяют права) либо через панель управления сервером.

2. Далее, в секцию location / {…}, вставляем необходимые правила.

Если вам необходимо убрать .php:

rewrite ^/([^.]+)$ /$1.php break;

Если вам необходимо убрать .html:

rewrite ^/([^.]+)$ /$1.html break;

Если вам необходимо убрать .htm:

rewrite ^/([^.]+)$ /$1.htm break;

Если в процессе настройки у вас что-то не получается – пишите об этом в комментариях.

Рекомендуем к просмотру
Установка бесплатного сертификата от Let’s Encrypt на сайт с сервером CentOS 6 + ISPmanager 4 + Nginx + Apache
Статьи и советы
Как убрать подчеркивание у ссылок в HTML на CSS/jQuery
Статьи и советы
Убираем кириллицу в URL-адресах в WordPress
Статьи и советы
26
комментариев
Форма комментирования этого поста скрыта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.
    • 0
    1
      •  Пользователь
    25 ноя в 23:41

    как убрать .html у страниц на поддоменах? и на всем сайте

    если использовать ваш код поддомены перестают работать

    вот пример страницы

    https://poddomen.sait.ru/strranica.html

    • 0
    1
      •  Пользователь
    7 дек в 14:34

    Помогите, пожалуйста. Есть самописный сайт. Он находится на сервере nginx. Мне нужно чтобы чтобы при переходе с страницы на страницу убиралось .html в конце ( пример technodar.group/flot.html, а стало https://technodar.group/flot). По вашей статье стало возможно открыть (страницу по ссылке https://technodar.group/flot) но при переходе станицы на страницу в url остается .html

      • 6
      1066
        •  Команда Pandoge
      9 дек в 11:03

      Артур Колох, здравствуйте!

      Ссылки на страницы в верстке прописываете сами или они генерируются автоматически?

    • 0
    4
      •  Пользователь
    11 авг в 22:27

    Помогите, пожалуйста. Надо убрать htm из URL. Ничего не получается, перерыл весь инет, перепробовал более 50 кодов в .htaccess вообще никаких изменений, не работают коды и все...

      • 0
      1066
        •  Команда Pandoge
      12 авг в 16:16

      Сергей Астахов, здравствуйте!

      Давайте начнём с того, используете ли вы на сайте CMS или нет?

      • 0
      4
        •  Пользователь
      12 авг в 22:13

      Артём Мáлков, я не знаю FrontPage относится к CMS или нет. Сайт старый, делаю все на компе вручную, а потом через FileZilla публикую.

      • 0
      1066
        •  Команда Pandoge
      13 авг в 10:47

      Сергей Астахов, если это просто html файлы - то после применения рекомендаций из статьи, попробуйте открыть страницы без .html на конце.

      То есть, если есть страница:

      /contact.html

      открыть в браузере:

      /contact

      По идее, они должны открыться без проблем. Если так и произошло, вам необходимо просто удалить эту часть (.html) из ссылок в коде сайта.

      Изменения рекомендую проверять в режиме инкогнито или с чисткой кеша браузера.

      • 0
      4
        •  Пользователь
      13 авг в 16:55

      Артём Мáлков, Вот что выдает открытие без htm:

      Запрещенный

      У вас нет разрешения на доступ к /Tochka_rosta/ на этом сервере.

      Apache/2.4.6 Server at mkouelanska.uxp.ru Port 80

      Что это значит? Очень надо чтоб открывались?

      • 0
      1066
        •  Команда Pandoge
      13 авг в 23:50

      Сергей Астахов, какой-то ещё редирект срабатывает. Пришлите содержимое файла .htaccess

      • 1
      4
        •  Пользователь
      14 авг в 22:06

      Артём Мáлков,

      RewriteEngine On

      RewriteCond %{REQUEST_FILENAME} !-f

      RewriteRule ^([^.]+)$ $1.htm [NC,L]

      Это что я внес, а было вот что:

      Options -Indexes

      Я пробовал все вместе, все равно не помогает

      • 3
      1066
        •  Команда Pandoge
      19 авг в 18:17

      Сергей Астахов, здравствуйте! Протестировал ваш код - у меня всё работает.

      Если проблема ещё актуальна - пришлите доступы к сайту (ftp) на почту, постараемся вам помочь.

    • 3
    1
      •  Пользователь
    31 дек в 15:05

    Привет!

    Пытаюсь убрать расширения php. Использую nginx. Но в файле конфигурации nginx.conf секции location / {...} вообще не существует, а когда пытаюсь сам куда-то ее там добавить, то при перезагрузке сервиса выдает ошибку.

    Не знаю в чем проблема, но очень хотелось бы убрать расширения.

    • 0
    2
      •  Пользователь
    3 дек в 14:32

    Здравствуйте.

    Использую localhost и nginx. Пробовал apache/nginx версии. Не сработало :/

    Не знаю почему.Также, у меня MacBook Air. Возможно из за этого?

    • 0
    2
      •  Проверенный
    29 апр в 09:52

    Не сработало у меня почему-то. Уже второй день над проблемой бьюсь. Сайт самописный, использую localhost. При выгрузке на сайт на хостинг тоже не работает.

      • 4
      1066
        •  Команда Pandoge
      29 апр в 12:22

      Castezar, предоставьте адрес сайта и доступ к хостингу. Постараюсь помочь.

      • 4
      2
        •  Проверенный
      1 мая в 10:01

      Здравствуйте. Сработало. Но мне пришлось в самом файле в ссылках убрать окончание .php.

      • 0
      2
        •  Пользователь
      3 дек в 14:35

      Castezar, как вы это сделали? Тоже localhost

    • 1
    766
      •  Гости
    7 июн в 20:26

    Привет!

    Подскажи плиз, как убрать index.php index.html для DLE. Уже реально мозг сломал, но не могу найти правильного решения.

    Сейчас стоит такое решение, но из-за него не работает поиск.

    if ($request_uri ~ "^/index.(php|html?)") {

    rewrite ^ /$1 permanent;

    }

    Ос CentOs7 стоит nginx.

    Заранее благодарен!

      • 0
      1066
        •  Команда Pandoge
      8 июн в 01:54

      Руслан, здравствуйте.

      Попробуйте так:

      location / {

      rewrite ^/(.*)index\.(php|html|htm)$ /$1 redirect;

      }

    • 1
    766
      •  Гости
    5 июн в 01:55

    Все поставил по инструкции, но не сработало, может у меня другая проблема?

    Вообще на старых страницах php расширения нет, но после создания нового раздела, на страницах в этом разделе появляется .php

    данная инструкция к сожалению не помогла

      • 0
      1066
        •  Команда Pandoge
      5 июн в 03:05

      Владимир, можно взглянуть на Ваш сайт? И что за CMS на нем?

    • 0
    766
      •  Гости
    20 апр в 15:31

    А как можно убрать всё что идёт после .html

      • 13
      1066
        •  Команда Pandoge
      20 апр в 23:51

      Федор, то есть? Можно пример?

      • 0
      766
        •  Гости
      7 мая в 19:35

      разъясню вместо Федора,

      у многих сайтов какие то параметры передаются в виде значений переменных методом get, так вот как вернуть запрашиваемый файл

      http://mysite.com/index.php ?variable1=znachenie1& variable2=znachenie2 &variableN=znachenieN

      обычно результат возвращается в виде страницы с этой ссылкой, как убрать все что после названия файла, включая точку расширение и параметры переданные в запросе?

      • 0
      766
        •  Гости
      7 мая в 20:10

      https://vk.com/search ?c%5Bq%5D=%D1% 8B%D0%B2%D0%B0% D1%8B%D0%B2%D0%B0& c%5Bsection%5D=auto

      вот пример такого запроса, расширение убрано а параметры после него остались.

      • 3
      766
        •  Гости
      7 мая в 20:29

      было бы идеально если бы название файла тоже убиралось.

      • 0
      1066
        •  Команда Pandoge
      8 мая в 13:46

      DH, убрать название чтобы осталось - https://vk.com/ ?c%5Bq%5D=%D1%8B% D0%B2%D0%B0%D1 %8B%D0%B2%D0%B0&c %5Bsection%5D=auto

      Это не серьезно, все будет обрабатывать главная страница сайта.

      А по остальному - пробуйте решить проблему через 301 редирект. По такому принципу работают чпу в DLE.

    • 3
    766
      •  Гости
    4 дек в 09:03

    Спасибо большое, помогло

Подняться наверх
«Pandoge» - помощник вебмастера