Как убрать html из адресной строки
Перейти к содержимому

Как убрать html из адресной строки

  • автор:

Как убрать .html в конце адреса каждой веб-страницы сайта, без использования php?

Читал, что можно убрать .html с помощью файла .htaccess, но весь код, который я видел для убирания .html написан на php.

А так как я использую бесплатный хостинг и на нем стоит запрет на использование php, то мне не удается убрать .html.
Можно ли как-то убрать расширение файла в конце адреса без использования php?
Java-скриптом, например.

  • Вопрос задан более трёх лет назад
  • 83126 просмотров

Комментировать
Решения вопроса 3
Сергей Широков @kurokikaze

RewriteEngine On RewriteCond % ! \.html$ RewriteCond % ! /$ RewriteRule ^(.*)$ $1.html

В htaccess. Обращение на /about будет открывать /about.html, к примеру

Ответ написан более трёх лет назад
Нравится 16 2 комментария

pandaa

Error 500 вывело

RadCor

Тоже самое, выдаёт 500 ошибку(

RewriteEngine on
RewriteBase /
RewriteCond % ^[A-Z]\ /([^.]+)\.html\ HTTP
RewriteRule ^([^.]+)\.html$ site.ru/$1 [R=301,L]
RewriteCond % !(\.[^./]+)$
RewriteCond % !-d
RewriteCond % !-f
RewriteRule (.*) /$1.html
site.ru замени на домен твоего сайта.

В .htaccess. Обращение к /about.html перенаправляет на /about. Сам этот вариант использую, и вам советую.

Ответ написан более трёх лет назад
Нравится 16 8 комментариев

vlar909

Мне кажется можно и без site.ru(если речь идёт о главном каталоге)
Денис Петрушков @petrushkov
Спасибо, дружище! Битый час сидел, перебирал варианты и ничего, кроме твоего, не работало!))

RadCor

Спасибо, работает.
Спасибо, работает! Как можно сделать такое сразу с .html и .php?

у меня вот есть вот такой вариант, из минусов — он отдает 302

RewriteEngine on
RewriteCond % /([^.]+)\.html [NC]
RewriteRule ^ /%1 [NC,L,R]
RewriteCond %.html -f
RewriteRule ^ %.html [NC,L]

ваш отдает 301 и редиректит как надо но только чистый url, если есть utm или get запросы выдает 404

Кто знает как объединить «позитивные» свойства первого и второго?

из минусов — он отдает 302

Это не «минус», а особенность, иногда желательная, иногда нет. Видите R=301 в коде, который в вопросе? А документацию по RewriteRule вы на сайте Apache читали?

wisgest, злорадствуете, поучаете, лучше бы помогли решить вопрос.
konanov, вообще-то это попытка помочь, за вас никто делать не должен.

Alien-Ka

Я девочка и не хочу платьице. Я хочу кофе и кодить

а не вариант создать папку например «anything», в папке index.html и у тебя будет путь
«mysite.ru/anything/»??

Ответ написан более трёх лет назад
Нравится 7 2 комментария

DimaLepel

У меня в адресной строке при переходе по адресу папки пишется адрес index.html. Как его убрать?
Дмитрий, чтобы узнать как убрать, надо знать, как добавляется, а это может быть сделано по разному.
Ответы на вопрос 3

viktornaymayer

Viktor Naymayer @viktornaymayer

Код:
RewriteEngine On
RewriteCond % !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]

Пояснение:
#Включаем механизм преобразования
RewriteEngine On
#Задаем условие «в url указан путь файла?»
RewriteCond % !-f
#Если да, то просто убираем html
RewriteRule ^([^\.]+)$ $1.html [NC,L]

Ответ написан более трёх лет назад
Нравится 11 6 комментариев

Копипаста
#Задаем условие «в url указан путь файла?»
RewriteCond % !-f

Тут проверяется отсутствие в файловой системе физического файла, указанного в запросе,
и если окажется, что он есть (файл exmple.), то выведут именно его вместо желаемого (example.hml). Такое маловероятно, но возможно.

shvetsov_av @shvetsov_av
То, что нужно. Благодарю!

DModUA

Спасибо! Все отлично.

ae_ph

У меня проблема с этим.
Расширение html удаляется в конце contact.html но добавляется site который портит всё.
site.ru/site/contact
Как это починить?

должно быть так
site.ru/contact

Brendan Castaneda, Указывай путь таким образом /contact , а не contact.html

ae_ph

renat05, У меня заработало всё.
Единственно это не работает если файл называется /my_works т.е. сам файл my_works.html
Это работает только если файл без нижнего слеша в названии: /myworks
А как сделать так, что-бы это работало с нижним слешем я не знаю.
Если у вас есть решение тогда прошу написать его.

RewriteCond % !-f RewriteCond % !-d RewriteCond %.html -f RewriteRule ^.*$ $0.html [L,QSA] RewriteCond % ([^\s]*)\.html(\?[^\s]*)? RewriteRule (.*) %1 [R=301,L]
My Works Contact

platinum11 @platinum11

для тех кому нужно убрать расширение php из урла (адресной строки). код проверен и работает

Ответ написан более трёх лет назад
Нравится 5 2 комментария
Спасибо, работает
AlexUnder00 @AlexUnder00

Специально зарегался сказать, что эта тема сломала мне php скрипты и я 3 дня пытался понять, в чем дело, ворочая бэкапы, которые работали и вдруг перестали. Так вот, имейте в виду, решение покалеченное.

Иван Погорелов @Ipogorelov
Папка с названием и в ней index.htm
Ответ написан более трёх лет назад
Комментировать
Нравится 3 Комментировать
Ваш ответ на вопрос

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

url-rewriting

  • Обработка URL

Как использовать https в mod_rewrite для одной ссылки?

  • 1 подписчик
  • 17 нояб.
  • 15 просмотров

Убрать .html во всех файлах статичного сайта

введите сюда описание изображения

Как убрать расширение .html в адресной строке браузера. Сайт расположен на хостинге и полностью статичен, есть также папки со вложенными html-страницами:

Отслеживать
7,291 5 5 золотых знаков 27 27 серебряных знаков 69 69 бронзовых знаков
задан 8 апр 2018 в 20:43
125 1 1 золотой знак 3 3 серебряных знака 12 12 бронзовых знаков

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

Вариант 1

Если у вас на хостинге в качестве веб-сервера используется Apache , то в .htaccess достаточно будет прописать:

RewriteEngine on RewriteBase / RewriteCond % ^[A-Z]\ /([^.]+)\.html\ HTTP RewriteRule ^([^.]+)\.html$ site.ru/$1 [R=301,L] RewriteCond % !(\.[^./]+)$ RewriteCond % !-d RewriteCond % !-f RewriteRule (.*) /$1.html 

site.ru замените на домен вашего сайта. После этого открытие site.ru/contacts.html перенаправит на site.ru/contacts .

Вариант 2

Для каждого файла создать папку с соответствующим файлу названием, после переместить в эту папку одноименный файл и переименовать его в index.html .

Отслеживать
ответ дан 8 апр 2018 в 21:11
MobiDevices MobiDevices
7,291 5 5 золотых знаков 27 27 серебряных знаков 69 69 бронзовых знаков
как можно узнать используется ли Apache?
8 апр 2018 в 21:18
@easy в корне сайта должен быть файл .htaccess. Или же саппорт хостинга спрашивайте.
8 апр 2018 в 21:20
если у меня нет на хостинге файла htaccess я могу его создать сам ?
8 апр 2018 в 21:50

всё настроил, делая ваш код, у меня выходила ошибка и страницы не открывались, выводила такой путь, без .htaccess обычно так мойсайт.ру/новости.хтмл, когда добавил ваш .htaccess и в нем заменил сайт.ру на свой сайт выводило ошибку и было «мойсайт.ру/мойсайт.ру/новости», я не совсем понял как это работает но вот, когда я удалил из кода .htaccess свой сайт, все страницы открывались и .html убирался, я не совсем понял как работает это но вот. .htaccess добавил в public_html своего .ht не было на хостинге, создавал новый.

Как убрать .html и .php с конца адресной строки?

Для этого создайте в корне вашего сайта соответствующие папки и загрузите туда файл index.php или index.html НО!

Для больших сайтов это не практично и для этого существует mod_rewrite Он заменяет ссылки одного типа на другие. Его использование имеет много плюсов. Во-первых, повышается защита, т.к. хакер не знает о структуре вашего сайта и о запросах, которые посылает ваш скрипт.
Во-вторых, получаются красивые и легко читаемые ссылки. В-третьих, некоторые поисковики легче индексируют такие ссылки.
Сокращенно это называют ЧПУ (человеко-понятный URL). Для начала в корневой папке вашего сайта должен находиться файл .htaccess. Если он уже есть хорошо, а если нет, то создайте. В начале пишите:

RewriteEngine On эта строка включает модуль RewriteBase /

это ссылка на папку вашего сайта Дальнейшие строки будут зависеть от структуры вашего сайта. Смотрите на пример:

RewriteRule ^catalog/dir([0-9]*)/ /module.php?section=catalog&area=dir&id=$1

Вот эта строка — /module.php?section=catalog&area=dir&id=$1 — означает какой адрес нужно заменить. А вот эта — ^catalog/dir([0-9]*)/ — чем заменить.
Заметьте в 1 строке в конце стоит переменная $1. Она означает любой набор символов, который должен находиться в этом месте и который будут заменять. Во 2 строке стоит запись — dir([0-9]*). Она означает, что будут заменяться все числа из 1 строки. То есть, если в 1 строке вместо переменной будет стоять число, то 1 строка замениться 2 строкой с этим числом после слова dir. Если же в 1 строке будет слово, то ничего не заменится и не будет работать. В моем примере я заменяю только числа, но вы можете менять и слова и слова с числами, но для этого вам придется писать более длинное регулярное выражение.

© Nikita_Sp, 2011 — 2023
При копировании материала активная ссылка на страницу-источник обязательна.

Как убрать index.html из URL

Предположим, вы заказали бесплатный хостинг для сайтов html в Рег.ру. По умолчанию когда вы открываете сайт в браузере, веб-сервер указывает в конце домена название индексного файла «index.html» или «index.php». Это негативно сказывается на поисковой позиции сайта. Для успешного продвижения в поисковых системах потребуется настройка переадресации с удалением «index.html» или «index.php» в конце адреса вашего сайта. Например, перенаправление с сайта «faq-reg.ru/index.html» на «faq-reg.ru»

Как убрать index.html или index.php через .htaccess

Откройте файл .htaccess в корневой директории сайта. Если у вас нет этого файла воспользуйтесь справкой: У меня нет файла .htaccess, что делать?

Добавьте в конце файла .htaccess одно из правил, которое подходит для вашего случая:
Как убрать index.html из URL для главной страницы
Чтобы убрать index.html в конце адреса вашего домена, воспользуйтесь правилом:

RewriteEngine On RewriteRule ^index\.html$ / [R=301,L]

Как убрать index.php из URL для главной страницы
Чтобы убрать index.php в конце адреса вашего домена, воспользуйтесь правилом:

RewriteEngine On RewriteRule ^index\.php$ / [R=301,L]

Как убрать index.html из URL для всех страниц

Если у вас несколько файлов index.html в разных папках, например, faq-reg.ru/support/index.html, вы можете убрать index.html из адресной строки, применив правило:

RewriteEngine On RewriteRule ^index\.html$ / [R=301,L] RewriteRule ^(.*)/index\.html$ /$1/ [R=301,L]

Теперь любой запрос, который оканчивается на «index.html», будет переадресован на URL без него.
Как убрать index.php из URL для всех страниц

Если у вас несколько файлов index.php в разных папках, например, faq-reg.ru/support/index.php, вы можете применить правило:

RewriteEngine On RewriteRule ^index\.php$ / [R=301,L] RewriteRule ^(.*)/index\.php$ /$1/ [R=301,L]

Теперь любой запрос, который оканчивается на «index.php», будет переадресован на URL без него.
Сохраните файл с внесенными изменениями.

Готово, после внесения правила в .htaccess ваш сайт будет открываться без index.html или index.php в конце URL.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *