Удалить повторяющиеся строки   •   Online-инструменты
10 583 просм
8 комм
Поделиться:

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

Часто слышу, что сеошники советуют убирать окончания .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;

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

8
комментарий
Сергей
4.12 в 09:03
Спасибо большое, помогло
  • 0
Федор
20.04 в 15:31
А как можно убрать всё что идёт после .html
  • 0
Федор, то есть? Можно пример?
  • 11
DH
7.05 в 19:35
разъясню вместо Федора,
у многих сайтов какие то параметры передаются в виде значений переменных методом get, так вот как вернуть запрашиваемый файл
http://mysite.com/index.php ?variable1=znachenie1& variable2=znachenie2 &variableN=znachenieN
обычно результат возвращается в виде страницы с этой ссылкой, как убрать все что после названия файла, включая точку расширение и параметры переданные в запросе?
  • 0
DH
7.05 в 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
вот пример такого запроса, расширение убрано а параметры после него остались.
  • 0
DH
7.05 в 20:29
было бы идеально если бы название файла тоже убиралось.
  • 0
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.
  • 0
Владимир
5.06 в 01:55
Все поставил по инструкции, но не сработало, может у меня другая проблема?
Вообще на старых страницах php расширения нет, но после создания нового раздела, на страницах в этом разделе появляется .php
данная инструкция к сожалению не помогла
  • 0
Владимир, можно взглянуть на Ваш сайт? И что за CMS на нем?
  • 0
Руслан
7.06 в 20:26
Привет!
Подскажи плиз, как убрать index.php index.html для DLE. Уже реально мозг сломал, но не могу найти правильного решения.
Сейчас стоит такое решение, но из-за него не работает поиск.
if ($request_uri ~ "^/index.(php|html?)") {
rewrite ^ /$1 permanent;
}
Ос CentOs7 стоит nginx.
Заранее благодарен!
  • 0
Руслан, здравствуйте.

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

location / {

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

}
  • 0
Оставить комментарий:
Нажимая кнопку «Отправить» вы даете согласие на обработку своих персональных данных.
Имя и фамилия
E-mail
Текст комментария