Редирект без html на с html: 301 редирект настройка через .htaccess

Содержание

301-ый редирект ссылок с .html на без .html

Твитнуть

Поделиться

Плюсануть

Поделиться

Класснуть

Уже много лет на этом блоге в конце статей добавляется .html, так как раньше я верил, что это даёт плюсик для поисковиков. Какой – я уже не помню.

Прошло много времени, скилл seo-оптимизатора вырос, теперь ясно, что польза от этого нулевая и можно устранить. Как раз недавно шаблон сменил, актуально будет сделать побольше изменений.

301 редирект при смене ЧПУ

Итак, что я сделал, чтобы ссылки прибрели необходимый мне внешний вид. Для начала заходим в админку, в раздел «Постоянные ссылки», и меняем такое:

На вот такое:

После этого возникла проблема – старые ссылки отдавали 404-ую страницу.

Решение — сделать 301 редирект со старых страниц на новые. Редирект шаблонный, всё можно решить одной строкой.

Редирект с html на без html

Решить проблему поможет файл .htaccess

в корневой директории. Я добавил вот такую строчку:

RewriteRule (.+)\.html?$ https://blog.sk8er.name/$1/ [R=301,L]

Не забудьте заменить blog.sk8er.name на адрес своего сайта.

Вот и всё, после этого страницы с html переадресовывает на адрес без html. Кстати, редирект идёт сразу на страницу со слешем в конце. Дело в том, что WordPress итак всегда делает переадресацию на страницу со слешем. Если не позаботиться об этом – будет два редиректа. Не думаю, что это негативно скажется на сайте и его продвижении в целом, но проверять не хочется.

Если нужен редирект с html на без html, но на версию без слеша – используйте данную строчку в .htaccess:

RewriteRule (.+)\.html?$ https://blog.sk8er.name/$1 [R=301,L]

Проверить ответ сервера при редиректе можно с помощью этого сайта. Удобно просматривать http-заголовки.

Заметил огромный минус. Раз произошло изменение ЧПУ, то комментарии ВКонтакте и Disqus (я вставляю универсальный код, не пользуюсь плагином) не отображаются в статьях.

Оказывается со временем они подхватывают редирект и отображаются на новых страницах.

Не забудь покликать по социальным кнопкам и оставить комментарий.

Твитнуть

Поделиться

Плюсануть

Поделиться

Класснуть

.htaccess — Редирект c .html/ на без html и без слэша

Для единообразия формирования URL страниц сайтов, и предотвращения появлений дубликатов страниц, вводится стандартная часть файла .htaccess

Данный конфиг позволяет решить следующие задачи:

  • Активация канонических директив
  • Установить основное зеркало сайта с www или без него с учетом сохранения http или https
  • Удалить любое количество «/» стоящих рядом до 1 ///—> /
  • Удалять «/» в конце URL если это файл
  • Добавлять «/» в конце URL если его там нет и это не файл
  • Удалить из URL index.php
  • Требования google page speed

Последовательность установки:

  1. Вставить код в начале .htaccess
  2. При вставке требуется указать правильное зеркало сайта, раскоментировав нужное
  3. Удалить старый redirect перенаправление на основное зеркало.
  4. Проверить все новые redirect(ы) на правильную работу в условиях данного проекта.

Код конфигурационного файла каталога .htaccess.

############################################################################
#### Стандартный .htaccess для проектов студии Клондайк, версия 3.6     ####
############################################################################
RewriteEngine On
   #  Директива включает редиректы.
RewriteBase / 
   # Без директивы (.*) = /$1 будет /var/wwww/site/web/$1  с директивой  = /$1
Options +FollowSymLinks
   # Разрешает переход по символическим ссылкам.
php_flag display_errors off
  # запретить отображение ошибок  (требование монитора качества)
php_flag allow_url_fopen off
  # запретить  использовать удаленые файлы (требование проактивной защиты)

############################################################################
#### Выбор основного зеркала (с www или без www)                        ####
############################################################################
    # 1.(.*)$ %1/ [R=301,L]
   # Удалить index.php из URL.

############################################################################
#### Компрессия статического контента для гугл  спид тест               ####
############################################################################
<IfModule mod_deflate.c>
  AddType image/svg+xml .svg
  AddOutputFilterByType DEFLATE image/svg+xml  
  AddOutputFilterByType DEFLATE application/rss+xml
  AddOutputFilterByType DEFLATE application/vnd.ms-fontobject
  AddOutputFilterByType DEFLATE application/x-font
  AddOutputFilterByType DEFLATE application/x-font-opentype
  AddOutputFilterByType DEFLATE application/x-font-otf
  AddOutputFilterByType DEFLATE application/x-font-truetype
  AddOutputFilterByType DEFLATE application/x-font-ttf
  AddOutputFilterByType DEFLATE application/x-javascript
  AddOutputFilterByType DEFLATE application/xhtml+xml
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE font/opentype
  AddOutputFilterByType DEFLATE font/otf
  AddOutputFilterByType DEFLATE font/ttf
  AddOutputFilterByType DEFLATE image/svg+xml
  AddOutputFilterByType DEFLATE image/x-icon
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE text/html
  AddOutputFilterByType DEFLATE text/javascript
  AddOutputFilterByType DEFLATE text/plain
  AddOutputFilterByType DEFLATE text/xml
  AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>
<IfModule mod_expires.c>
  ExpiresActive on
  ExpiresByType image/jpeg "access plus 3 day"
  ExpiresByType image/svg "access plus 3 day"
  ExpiresByType image/gif "access plus 3 day"
  ExpiresByType image/png "access plus 3 day"
  ExpiresByType text/javascript "access plus 3 day"
  ExpiresByType text/css "access plus 3 day"
  ExpiresByType application/javascript "access plus 3 day"
</IfModule>

############################################################################
#### Антивирус, только для 1С-Битрикс,                                  ####
############################################################################
#php_value auto_prepend_file "/home/bitrix/ext_www/SITE.RU/bitrix/modules/security/tools/start.php"
   #  укажите путь до файла 
   # включить тут /bitrix/admin/security_antivirus.php?lang=ru

############################################################################
#### Конец общей части, далее следует собственные директивы .htaccess   ####
############################################################################

Пруфлинк: «Студия Клондайк»

Как сделать редирект на HTML | REG.RU

Читайте нашу статью, если хотите узнать, что такое, для чего используется и как настроить редирект HTML.

Что такое редирект

Редирект — это перенаправление пользователя с одной страницы на другую. Когда пользователь вводит в адресной строке один URL-адрес, браузер автоматически переводит его на другой URL. Перенаправление можно настроить как на сторонний сайт, так и с одной страницы на другую внутри одного сайта.

Чаще всего используются такие редиректы:

  • 301 редирект — его настраивают, когда страница навсегда перенесена на другой URL. При таком редиректе поисковики индексируют только новый вариант страницы — на неё и попадает пользователь.
  • 302 редирект — его настраивают, когда страница перенесена временно. В этом случае поисковые системы индексируют и старый, и новый вариант страницы.

Для чего используют редирект

HTML redirect на другую страницу используют в таких случаях:

  • перенос сайта на другой домен. Лучше всего настраивать редирект на другой сайт, в тот момент, когда старый сайт ещё ранжируется в поисковой выдаче;
  • использование устаревших браузеров. Если часть посетителей пользуется старыми версиями браузеров, у них может не быть поддержки файлов Cookie и могут не работать другие способы перенаправления;
  • показ новой информации с задержкой по времени — если нужно, чтобы редирект срабатывал не сразу. Допустим, вы проводите акцию на сайте и хотите привлечь к ней внимание. Для этого можно настроить переадресацию с главной страницы сайта на страницу акции;
  • перенаправление пользователя на другую страницу сайта. Например, после оплаты покупки.
  • перенос разделов на субдомены. Например, на странице вашего сайта site.ru/catalog был перечень услуг. Но набор услуг увеличивался, и со временем понадобилось перенести его на субдомен
    catalog.site.ru
    . В этом случае удобно настроить редирект с site.ru/catalog на catalog.site.ru;
  • перенаправление нескольких доменов на один основной. Клиентам бывает сложно запомнить домен сайта. Поэтому часто владельцы сайтов регистрируют помимо основного домена схожие с ним доменные имена и настраивают редирект на основной сайт. Так клиенты с большей вероятностью попадут на основной сайт.

Настроить перенаправление можно несколькими способами:

HTML-редирект может замедлить продвижение сайта в поисковых системах. Рекомендуем его использовать только при отсутствии поддержки PHP, на тарифе хостинга Host-Lite.

В инструкции ниже мы расскажем, как настроить редирект посредством HTML.

Что такое HTML-редирект

Редирект на HTML настраивается в коде индексного файла. Индексный файл чаще всего называется index.html. Внутри файла в блоке head нужно прописать специальный метатег

Refresh. При использовании метатега Refresh перенаправление срабатывает в коде страницы. Это значит, что перенаправляет не скрипт на сервере, а именно браузер.

Допустим, вы сделали HTML-редирект со страницы index.html на new_index.html. В этом случае перенаправление будет работать по такой схеме:

  1. Браузер запрашивает файл стартовой страницы index.html с сервера.

  2. Сервер находит index.html и отвечает на запрос браузера.

  3. Когда браузер открывает страницу index.html, он «читает» строки кода, которые прописаны в файле. Когда он доходит до строки с HTML-редиректом, то видит в ней упоминание файла new_index.html.

  4. Браузер посылает запрос к серверу, на котором хранится new_index.html.

  5. Сервер находит эту страницу и отвечает на запрос браузера.

  6. Браузер открывает страницу new_index.html.

Метатег Refresh выглядит так:

<meta http-equiv="refresh" content="0;URL=http://site.ru" />

Где:

  • content — время ожидания редиректа в секундах. Укажите 0, если хотите, чтобы перенаправление срабатывало сразу;
  • URL — ссылка на конечную страницу.

Как настроить HTML-редирект

  1. 1.

    Откройте индексный файл.

  2. 2.

    Введите текст:

    <head>
    <meta http-equiv="refresh" content="0;URL=http://site.ru" />
    </head>

    Где:

    • 0 — время ожидания редиректа в секундах. Оставьте значение 0, если хотите, чтобы редирект срабатывал без задержки;
    • http://site.ru — ссылка на страницу, на которую должен вести редирект. Если на конечном сайте установлен SSL-сертификат, укажите https:// вместо http://.
  3. 3.

    Затем сохраните изменения.

Код редиректа будет выглядеть так:

Готово, вы настроили HTML-редирект.

Помогла ли вам статья?

2 раза уже помогла

www на без www, http на https, с домена на другой домен

Опубликовано: 29 августа 2014

Обновлено: 25 июня 2020

733 704

Три важных совета и семнадцать конкретных примеров установки 301 переадресации страниц через htaccess!

Советы

Располагайте переадресации страниц в файле от частных к более глобальным (сверху вниз). Например: простая переадресация двух страниц стоит выше, чем глобальное правило редиректов с www на без www.(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

Может быть полезно:

как, где и в каких случаях их использовать — 5 o’click

Поделиться:

Редиректы являются неотъемлемым элементом технической оптимизации сайта, с которым время от времени сталкивается абсолютное большинство вебмастеров и SEO-специалистов. Если вы ранее не использовали редиректы и не знаете, с какой стороны к ним подступиться, это руководство предназначено именно для вас. В рамках одной статьи мы собрали список основных редиректов и примеры их использования, а также перечень потенциальных ошибок и проблем, которые могут возникнуть вследствие неправильной настройки редиректов.

Что представляет собой редирект

Редирект — механизм автоматической переадресации пользователей с одного URL на другой. Чаще всего переадресация реализуется на стороне сервера при помощи специальных инструкций в серверных файлах-конфигураторах. Для сайтов на серверах Apache используется файл .htaccess; для тех, что работают на nginx, — nginx.config. Также переадресацию можно настроить с помощью PHP, HTML и JavaScript.

Какими бывают редиректы и когда их использовать?

Всего существует 10 различных видов редиректов, включая Meta Refresh. Но на практике распространены случаи использования всего нескольких.

301 Moved Permanently

301 редирект — абсолютный лидер по частоте использования. Он применяется для постоянной переадресации и передает ссылочный вес от начального адреса к конечному URL по аналогии с обычными ссылками.

301 редирект используется для нескольких целей:

  1. Постоянная переадресация с адресов уже несуществующих или неактуальных страниц.
  2. Перенаправление на корректный адрес после переезда или редизайна сайта.
  3. «Склейка» (объединение двух адресов в индексе поисковых систем) дубликатов страниц, включая полные копии, доступные по разным адресам; идентичные версии одной и той же страницы с разными протоколами (HTTP и HTTPS), префиксом www. и без него, а также страницы с закрывающими слешами в URL-адресах и без них.(.*)$ http://site.com/$1 [R=301,L]

    Если же нужно выставить редирект со страниц с GET-параметрами на адреса без них, следует прописать в .htaccess следующий код:

    RewriteCond %{QUERY_STRING} action=page [NC]
    RewriteCond %{QUERY_STRING} id=(\d+) [NC]
    RewriteRule .* /page/%1/? [R=301,L]

    302 Found (HTTP 1.1) / Moved Temporarily (HTTP 1.0)

    302 редирект используется для временной переадресации и чаще всего настраивается на этапе тестирования новых страниц и редизайна сайта. Страницы, с которых выставлен 302 редирект, не «склеиваются» с конечным URL, то есть они продолжают независимо индексироваться и существовать в индексах поисковых систем. С этой особенностью 302 редиректа связана ошибка, часто допускаемая неопытными SEO-специалистами. Суть ее заключается в том, что для устранения дублей страниц и индексации только одного корректного URL используется не 301, а 302 редирект, из-за которого в индексе возникают крайне нежелательные дубли.

    302 редирект передает ссылочный вес так же, как и 301. Отметим отдельно, что в зависимости от версии HTTP код ответа может отличаться — 302 Moved Temporarily в случае с HTTP 1.0. и 302 Found на сайтах с HTTP 1.1.

    Пример использования 302 редиректа — временное перенаправление пользователя на страницу распродажи или акции без изменения изначальной страницы товара/услуги. Выглядеть он будет следующим образом:

    Redirect 301 /old/black-dress-1.html http://www.site.com/black-dress-1-sale.html

    Еще один распространенный пример — перенаправление на мобильную версию сайта, которая находится на выделенном поддомене. Так как в данном случае важна индексация обеих версий, то 302 редирект подходит для этой цели как нельзя лучше. Выглядеть он будет так:

    RewriteCond %{HTTP_USER_AGENT} (?i:midp|samsung|nokia|j2me|avant|docomo|novarra|palmos|palmsource|opwv|
    chtml|pda|mmp|blackberry|mib|symbian|wireless|nokia|hand|mobi|phone|
    cdm|upb|audio|SIE|SEC|samsung|HTC|mot-|mitsu|sagem|sony|alcatel|lg|eric|vx|NEC|philips|mmm|xx|panasonic|sharp|
    wap|sch|rover|pocket|benq|java|pt|pg|vox|amoi|bird|compal|kg|voda|sany|
    kdd|dbt|sendo|sgh|gradi|jb|dddi|moto|iphone|android) [NC]
    RewriteCond %{HTTP_HOST} site.old.site$
    RewriteRule (.*)$ http://new.site/$1 [R=307,L]

    Прочие виды редиректов

    Ниже вы можете найти краткое описание прочих видов редиректов, которые на практике встречаются весьма редко, но могут вам пригодиться в особых ситуациях.

    300 Multiple Choices

    Редирект со множественным выбором предполагает автоматический или ручной выбор одного из вариантов перенаправления. Самый показательный пример — переход на одну из нескольких доступных языковых версий сайта. Используется довольно редко.

    303 See Other

    Работает по аналогии с 302 временным редиректом, но отличается по методу запроса. Запрещает кеширование конечного адреса редиректа.

    304 Not Modified

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

    305 Use Proxy

    В случае с 305 Use Proxy браузер получает информацию о том, что для перехода на конечный адрес требуется прокси, адрес которого передается в одном из заголовков самого редиректа. Получив подобный ответ, браузер делает повторный запрос уже с использованием указанных прокси.

    Как правильно настраивать редиректы

    Чтобы обеспечить максимально корректную работу редиректов на своем сайте, вам нужно учесть ряд нюансов, которые напрямую влияют не только на восприятие сайта поисковиками, но и на уровень доверия и удобства пользователей. Ниже приведен список основных рекомендаций, которых следует придерживаться при настройке редиректов.

    Когда не стоит делать редиректы

    1. Не выстраивайте редиректы на страницы с уже имеющейся переадресацией. Делайте исключительно прямое перенаправление, чтобы не создавать цепочек. Это же касается и связки Канонический атрибут + Редирект. Не рекомендуется выставлять атрибут rel=canonical на URL с редиректом, а также делать редирект на канонизированную страницу.
    2. Не используйте редирект там, где уместнее использовать rel=canonical. Если у вас есть две страницы с почти идентичным содержанием, это не означает, что их непременно нужно склеивать. Вполне возможно, будет лучше просто указать поисковым роботам на приоритетный для индексации URL, но оставить на сайте обе страницы.
    3. По возможности не выставляйте редиректы на страницы, которые существенно отличаются от изначальных. Если поисковый робот обнаружит ощутимую разницу между содержимым начального и конечного URL, поисковик может заподозрить вас в недобросовестных манипуляциях. Это, в свою очередь, негативно скажется на SEO отдельно взятых страниц и репутации сайта в целом.
    4. Не используйте редиректы для служебных файлов во время переезда. Будьте осторожны с переадресацией для служебных файлов: к примеру, редирект для файла robots.txt может повлечь за собой проблемы с его обработкой поисковыми роботами.

    Что следует учитывать при создании редиректов

    1. Тип редиректа должен соответствовать своему назначению. Например, вам необходимо выставить постоянный редирект, но по незнанию или банальной невнимательности вы воспользовались одним из временных.
    2. Конечный URL должен быть доступен для индексации. Если вы хотите «склеить» разные адреса при помощи редиректов и добиться замены одного из них в индексе, конечный URL должен быть доступен для поисковых роботов и отдавать код ответа 200 OK.
    3. Старайтесь сохранить старую структуру ссылок. Если вы планируете переезд на новый домен и настройку соответствующих редиректов, постарайтесь сохранить старую структуру URL, чтобы начальный адрес, к примеру, имел вид olddomain.com/page1, а конечный — newdomain.com/page1.
    4. Старайтесь настраивать редиректы исключительно на стороне сервера. Все прочие методы используйте лишь в крайнем случае.
    5. Учитывайте, что индексация и «склейка» новых URL не происходит мгновенно. Если на предыдущем домене или старой CMS у вас был относительно скромный трафик, индексация адресов редиректов может занять довольно много времени.
    6. Убедитесь, что редиректы ведут на страницы с кодами ответа 200. Код ответа 200 OK — обязательное условие для индексации, а также нормальной и быстрой «склейки» страниц поисковыми системами. Если код будет 4хх или 5хх, то это будет противоречить самой сути редиректа. В случае с 3хх кодом ответа сервера у вас получится цепочка редиректов.

    Как выяснить, нет ли на сайте проблем с редиректами

    Чтобы выяснить, нет ли на вашем сайте описанных выше проблем, воспользуйтесь краулером и просканируйте весь сайт для анализа имеющихся редиректов. Например, если вы используете Netpeak Spider, вам следует выполнить следующие действия:

    1. Откройте программу и установите все настройки по умолчанию.
    2. Впишите адрес сайта в соответствующем поле и запустите сканирование.
    3. После завершения сканирования перейдите на боковую панель и откройте вкладку «Отчеты» → «Ошибки». Там вы увидите сгруппированные по уровню критичности ошибки. Большинство проблем, связанных с редиректами, будут высвечиваться как высоко критичные.


    Программа идентифицирует следующие типы ошибок:

    • битый редирект;
    • бесконечный редирект;
    • максимальное количество редиректов;
    • редирект, заблокированный в robots.txt;
    • редиректы с неправильным форматом URL;
    • refresh редирект;
    • редирект на внешний сайт.
    1. Кликните по названию ошибки, чтобы увидеть список URL с соответствующей проблемой.
    2. При необходимости выгрузите отфильтрованные результаты, нажав кнопку «Экспорт» над таблицей слева. Также вы можете выгрузить один из удобных отчетов по редиректам, выбрав соответствующую опцию в меню «Экспорт».

    Коротко о главном

    Всего насчитывается 10 видов редиректов, но лишь некоторые из них могут похвастаться практическим применением. Это относится к следующим видам:

    • 301 Moved Permanently, который используется для постоянной переадресации и «склейки» страниц в индексе.
    • 302 Found/Moved Temporarily и 307 Moved Temporarily, необходимые для временного перенаправления.

    При построении редиректов необходимо придерживаться ряда базовых рекомендаций:

    1. Следует использовать тот тип редиректа, который соответствует своему назначению.
    2. Если конечный URL переадресации должен быть проиндексирован, его нужно сделать доступным для индексации поисковыми роботами.
    3. Желательно сохранять изначальную структуру ссылок при переезде, чтобы у начального и конечного URL отличался разве что домен.
    4. В большинстве ситуаций следует использовать серверный редирект.
    5. Следует избегать появления цепочек редиректов, а также цепочек, состоящих из редиректов и атрибутов rel=canonical.
    6. Важно следить, чтобы конечные адреса не отдавали коды ответа 4xx и 5xx.
    7. Прежде чем ставить редирект, следует определиться, нужен ли он в принципе и не лучше ли воспользоваться атрибутом rel=canonical.
    8. Важно соблюдать осторожность с переадресацией служебных файлов.
    9. Не стоит без необходимости ставить редирект на страницу, которая существенно отличается от изначальной.

    перенаправление файлов с расширением html на файлы без расширения (в url)



    Недавно я изменил свой сайт url с помощью htaccess, так что мои URL-адреса не будут показывать расширения файлов. Теперь моя проблема заключается в том, что я создал новый xml sitemap, так что мой url будет без расширения!!! инструмент Google webmaster говорит мне о проблеме дубликата контента!! ie. страница и page.html имеют одинаковое название…. поэтому мой вопрос заключается в том, как перенаправить URL-адреса с расширением файла html на URL-адреса с расширением out!!! это пример моего сайта url с расширением html

    http:/ / www.shenazhpeyk.co.uk / кодирование-machines.html

    Я хочу перенаправить и изменить его на

    http:/ / www.shenazhpeyk.co.uk / кодирующие машины

    так что это исправит проблему с Google webmaster tools (пожалуйста, предоставьте мне код для использования в файле htaccess)

    большое спасибо

    .htaccess redirect
    Поделиться Источник Amir Oof     13 февраля 2012 в 13:29

    3 ответа


    • Получить *only* путь к файлу файлов без расширения [vb.net]

      Я использую функцию для получения путей к файлам в моем исполняемом пути с расширением txt . Dim FileEntries as string() = _ Directory.GetFiles(Path.GetDirectoryName(Application.ExecutablePath), *txt Но теперь я понимаю, что было бы лучше использовать эти файлы без расширения txt, несмотря на то,…

    • Обслуживание статических файлов HTML в Nginx без расширения в url

      корневой каталог = /srv/myproject/xyz/main/ в папке main у меня есть несколько файлов *.html, и я хочу, чтобы все они указывали на url, скажем, /test/ (что сильно отличается от структуры каталогов) это моя самая базовая конфигурация nginx server { listen 80; error_log /var/log/testc.error.log;…



    2

    Нашел и этот код. Не уверен, что это приведет к тому же. Кажется, это работает для меня, как и выше (для PHP).

    RewriteEngine On
    
    # Unless directory, remove trailing slash
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^([^/]+)/$ /$1 [R=301,L]
    
    # Redirect external ./]$ %{REQUEST_URI}.html [QSA,L]
    

    Поделиться Suhas     21 сентября 2012 в 16:18



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


    Переименование файлов без расширения в случайные файлы {1,2…}с расширением

    Я видел, как переименовывать сразу много файлов и менять их расширения, как в этом примере $ rename -v ‘s/\.htm$/\.html/’ *.htm 3.htm renamed as 3.html 4.htm renamed as 4.html 5.htm renamed as…


    Есть ли что-то неправильное в использовании файлов html без расширения «.html»?

    Мне было интересно, есть ли что-то неправильное в использовании файлов html и php без расширений. Например, если бы я должен был загрузить файл с расширением, я бы сделал это с помощью URL, как это:…


    html сайт url открывается без расширения .html. почему?

    у меня есть сайт html5, мой запрос заключается в том, что когда я открываю любой url без расширения .html, он открывается почему? я хочу, чтобы все мои url открывались только с расширением .html….


    Получить *only* путь к файлу файлов без расширения [vb.net]

    Я использую функцию для получения путей к файлам в моем исполняемом пути с расширением txt . Dim FileEntries as string() = _ Directory.GetFiles(Path.GetDirectoryName(Application.ExecutablePath),…


    Обслуживание статических файлов HTML в Nginx без расширения в url

    корневой каталог = /srv/myproject/xyz/main/ в папке main у меня есть несколько файлов *.html, и я хочу, чтобы все они указывали на url, скажем, /test/ (что сильно отличается от структуры каталогов)…


    Перенаправление ссылок без расширения .html на ссылку с расширением .html

    После изменения структуры моего сайта мне нужна помощь в перенаправлении ссылок. Как я могу перенаправить все ссылки, которые не имеют расширения .html, на ту же ссылку, но с расширением .html?…


    .htaccess-301 перенаправляет все файлы без расширения на расширение .html

    Мне нужно 301 перенаправить запросы на файлы без расширения на то же самое с добавленным расширением .html: http://www.mydomain.com/this к http://www.mydomain.com/this.html Следующее не будет…


    перенаправление htaccess 404 работает для расширения .html, но не для расширения .php

    Я сделал пользовательскую страницу 404 и вставил ее в свой файл htaccess: ErrorDocument 404 /404.php И прямая ошибка работает правильно всякий раз, когда я тестирую url без расширения или .html….


    Документирование файлов без расширения в Doxygen

    У меня есть некоторые проблемы с doxygen для чтения файлов без расширения. Я определил эти параметры в своем конфигурационном файле doxygen : EXTENSION_MAPPING = no_extension=FORTRAN FILE_PATTERNS =…


    Открывайте только файлы с расширением HTML из папки (path) без указания имен файлов

    Откройте все файлы только 1extension в определенном пути, не давая имен файлов. Так как у меня есть много файлов html в 1 папке с разными именами файлов, но с одним и тем же расширением(.html) Я…

    30+ примеров настройки 301 редиректа в .htaccess

    Популярные примеры правильной настройки 301 редиректа в файле .htaccess. Советы по добавлению редиректов.

    Полезные советы

    • Современные браузеры по умолчанию используют кеширование для редиректов. Чтобы проверить работу редиректа необходимо очистить кеш в браузере или использовать любой сторонний сервис по проверке кода ответа сервера.
    • Нежелательно создавать цепочки редиректов. При медленной работе сервера это вызовет недовольство пользователя. Поисковые роботы также не любят последовательные редиректы — вес исходной страницы может не передаться.
    • При составлении файла .htaccess простые директивы должны идти раньше сложных, которые распространяются на весь сайт. Такая компоновка будет более удобной при работе с файлом и поможет избежать путаницы.catalog/okno/?$ /firma/okna/detail.php?ID=123 [NC,L]

      Переадресация с https на http

      Необходимое правило для решения проблемы с дублями страниц в поисковых системах.

      
      RewriteCond %{HTTPS} "on"
      RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]
      

      Настройка ответа 403 для спама по REFERER

      Данное правило позволяет не пускать на сайт спамный трафик с других сайтов:

      
      RewriteCond %{HTTP_REFERER} ref-spam-site.ru [NC,OR] 
      RewriteCond %{HTTP_REFERER} another-ref-spam.ru [NC]
      RewriteRule .* - [F]

      Обработка ошибки 404 в .htaccess

      Для поисковых систем очень важно получать код ответа 404 для несуществующих страниц

      ErrorDocument 404 /404-for-me.php

      Особенности настройки

      Следует помнить, что все правила выполняются в .htaccess в порядке следования их в файле, поэтому необходимо следить за очередностью правил.

      Избегайте цепочек редиректов, когда от старой до новой страницы осуществляется посещение еще одной страницы. Цепочки переадресаций негативно влияют на доверие пользователей и поисковых систем.

      Включение редиректа для определенных User Agent

      Например редирект на мобильную версию для планшетов и смартфонов:

      
      RewriteCond %{HTTP_USER_AGENT} (iPad|ipad|iphone|iPhone|ipod|iPod|android|midp|j2me|symbian|series\ 60|symbos|windows\ mobile|windows\ ce|ppc|smartphone|blackberry|mtk|bada|windows\ phone) [NC]  
      RewriteRule (.*) http://m.mysite.ru/ [L,R=301]

      Настройка редиректов для всех поисковых роботов

      
      RewriteCond %{HTTP_USER_AGENT} !(accoona|ia_archiver|antabot|ask\ jeeves|baidu|dcpbot |eltaindexer|feedfetcher|gamespy|gigabot|googlebot |gsa-crawler|grub-client|gulper|slurp|mihalism|msnbot|worldindexer |ooyyo|pagebull|scooter|w3c_validator|jigsaw|webalta|yahoofeedseeker |yahoo!\ slurp|mmcrawler|yandexbot|yandeximages |yandexvideo|yandexmedia|yandexblogs|yandexaddurl|yandexfavicons |yandexdirect|yandexmetrika|yandexcatalog|yandexnews |yandeximageresizer) [NC] 
      RewriteRule (. — обознает начало строки (при использовании в начале выражения).
    • $ — конец строки.
    • \w — буква, цифра или подчёркивание _.
    • \d — любая цифра.
    • \D — любой символ, кроме цифр.
    • [0-9] — указание на любую цифру.
    • [a-z] — указание на любую букву от a до z с нижним регистром.
    • [A-Z] — указание на любую букву от A до Z с верхним регистром.
    • [a-zA-Z] — любая буква от a до Z, регистр не важен.
    • [a-Z] — тоже самое, только короче.

    Флаги для доп. опций

    • NC — NoCase отключает проверку регистра символов при срабатывании правила.
    • R — Redirect останавливает изменение URL-адреса и возвращает результат. Самое популярное значение R=301, однако встречаются и другие для временных редиректов (302, MOVED TEMPORARY).
    • L — Last останавливает создание URL-адреса и строка считается окончательной.

    .htaccess - Как удалить .html из URL?

    Хороший вопрос, но, похоже, сбил с толку людей. Ответы почти поровну разделились между теми, кто думал, что Дейв (ОП) сохранял свои HTML-страницы без с расширением .html , и теми, кто думал, что он сохранял их как обычно (с .html ), но хотел URL-адрес, без которого будет отображаться. Хотя вопрос можно было бы сформулировать немного лучше, я думаю, ясно, что он имел в виду. Если он сохранял страницы без .html , его два вопроса («как удалить .html») и (как «перенаправить любой URL-адрес с .html») будут точно такими же! Так что в этой интерпретации нет особого смысла. Кроме того, его первый комментарий (об избежании бесконечного цикла) и его собственный ответ, похоже, подтверждают это.

    Итак, давайте перефразируем вопрос и разберем задачу. Мы хотим достичь двух целей:

    1. Заметно удалите .html , если он является частью запрошенного URL (например, / page.html )
    2. Направьте обрезанный URL (например, / page ) обратно на фактический файл ( /page.html ).

    Нет ничего сложного в том, чтобы делать то и другое. (Мы могли бы достичь второго, просто включив MultiViews.) Задача здесь состоит в том, чтобы выполнить для них и без создания бесконечного цикла.

    Ответ Дэйва выполнил свою работу, но он довольно запутанный и совсем не переносимый. (Извини, Дэйв.) Лукаш Хабжик, кажется, подчистил ответ Анмола, и, наконец, Амит Верма улучшил их обоих.Однако никто из них не объяснил , как их решения решили основную проблему - как избежать бесконечного цикла. Насколько я понимаю, они работают, потому что переменная THE_REQUEST содержит исходный запрос из браузера. Таким образом, условие ( RewriteCond% {THE_REQUEST} ) запускается только один раз. Поскольку он не запускается при перезаписи, вы избегаете сценария бесконечного цикла. Но тогда вы имеете дело с полным HTTP-запросом - GET , HTTP и всем остальным - что частично объясняет некоторые из уродливых примеров регулярных выражений на этой странице.% {REQUEST_URI} .html [КОНЕЦ]

    Давайте разберемся…

    Первое правило довольно простое. Условие соответствует любому URL-адресу, оканчивающемуся на .html (или .htm ), и выполняет перенаправление на URL-адрес без расширения имени файла. Это постоянное перенаправление , чтобы указать, что обрезанный URL-адрес является каноническим .

    Второе правило тоже простое. Первое условие будет выполнено, только если запрошенное имя файла — , а не — действительный каталог (! -D ).Второй будет пройден, только если имя файла относится к допустимому файлу ( -f ) с добавленным расширением .html. Если оба условия проходят, правило перезаписи просто добавляет «.html» к имени файла. И тут происходит волшебство… [END] . Да, это все, что нужно для предотвращения бесконечного цикла. Документация Apache RewriteRule Flags объясняет это:

    Использование флага [END] завершает не только текущий раунд перезаписи. обработка (как [L]), но также предотвращает любую последующую перезапись обработка происходит в контексте каталога (htaccess).

    Как удалить расширение .html из URL статической страницы?

    Все страницы на сайте имеют структуру, заданную HTML. HTML обеспечивает структуру содержимого, текста, таблиц, заголовков и списков на веб-странице, что упрощает чтение страницы. При сохранении HTML-документа он имеет расширение .html. Следовательно, URL-адрес веб-сайта имеет расширение .html . Расширение .html можно легко удалить, отредактировав файл .htaccess .

    Файл .htaccess: Файл .htaccess создается с помощью текстового редактора, такого как Блокнот. Это простой файл ASCII, который позволяет серверу знать, какие изменения конфигурации должны быть сделаны для каждого каталога.

    Примечание: .htaccess — это полное имя файла. Это не file.htaccess , это просто .htaccess .

    Удаление расширения .html: Чтобы удалить расширение .html из URL-адреса.Например:
    С

     example.com/content.html 

    На


     example.com/content 

    Вам необходимо выполнить следующие действия:

    • Войдите в учетную запись cPanel.
    • В разделе Файлы щелкните значок Диспетчер файлов .
    • Нажмите кнопку « Настройки» в правом верхнем углу.
    • Если вы хотите внести изменения в основной домен, щелкните переключатель рядом с веб-корневым каталогом .Если необходимо внести изменения в другие домены, щелкните раскрывающееся меню и найдите домен, в котором должны быть внесены изменения.
    • Не забудьте установить флажок рядом с Показать скрытые файлы . Теперь нажмите кнопку Сохранить , чтобы вернуться в окно диспетчера файлов.
    • Теперь вы находитесь в корневой папке домена, который вы выбрали для внесения изменений. Найдите файл .htaccess и щелкните его правой кнопкой мыши.В меню выберите Изменить . Теперь вы можете добавить код в файл .htaccess.
    • Добавьте следующий код в файл .htaccess :
    • Нажмите кнопку Сохранить изменения , а затем кнопку Закрыть .

    Теперь вы можете связать любую страницу внутри HTML-документа без необходимости добавлять расширение страницы, так как расширение теперь не будет отображаться в URL-адресе веб-сайта.

    Пример:

      image  

    Поисковая система может индексировать эти страницы как повторяющееся содержание, чтобы избежать этого добавьте метатег в файл HTML.

    Пример:

      

    Вниманию читателя! Не прекращайте учиться сейчас. Освойте все важные концепции HTML с помощью Web Design for Beginners | HTML курс.

    домен — Перенаправить веб-страницу на другой сайт без изменения URL-адреса

    Можно. Для этого есть несколько вариантов.

    Один из способов — настроить настоящий виртуальный домен example2.com и настроить только параметр «Перенаправление», чтобы перенаправлять все, куда вы хотите. На самом деле это более простой и легкий подход (mod_rewrite — это гораздо больше «тяжелая артиллерия»).

    Т.е.

      
    ServerName example2.com
    Перенаправить / http://example.com/page2
    
      

    DigitalOcean, похоже, рекомендует этот подход./ $? Не знаю, попробуйте оба).

    https://stackoverflow.com/questions/13021893/htaccess-mod-rewrite-hostname

    Обратите внимание, что поведение этих двух опций различается. Первый скажет пользовательскому агенту загрузить другой URL-адрес, чтобы пользователь мог заметить, что они перешли на другой адрес. Второй будет представлять пользователю содержимое другого адреса, как если бы он был расположен на первом месте, т.е. пользователь увидит доменное имя example2.com, но страница будет поступать с example.com/page2. У них нет возможности узнать, доступна ли эта страница по другим адресам.Итак, страница содержит включенные медиафайлы (css, изображения, шрифты), вы также должны предоставить для них правила перезаписи или использовать для них только абсолютные URI.

    Я лично рекомендую следить за разработчиками Apache и по возможности избегать mod_rewrite (также см. Этот ответ).

    См. Также официальную документацию mod_rewrite. Будьте осторожны, этот модуль является функцией, поэтому используйте его осознанно и с осторожностью.

    Редиректы, которые не работают из-за переменных PHP

    Одна из самых мощных уловок.htaccess hacker — это возможность переписывать URL. Это позволяет нам совершать серьезные манипуляции с нашими ссылками; полезные вещи, такие как преобразование очень длинных URL-адресов в короткие симпатичные URL-адреса, преобразование динамических? created = page & URL-адресов в / friendly / flat / links, перенаправление отсутствующих страниц, предотвращение горячих ссылок, выполнение автоматического языкового перевода и многое, многое другое.

    Не заблуждайтесь, mod_rewrite сложен. Это не тема для быстрой технической закуски, возможно, даже не для ускоренного курса на выходных.Я видел, как парни проделывали несколько очень симпатичных вещей с помощью mod_rewrite, но с большой похвалой в адрес этого сумасшедшего оператора, Ральфа С. Энгельшалла, автора самого магического модуля. Я должен признать, что многое из этого все еще кажется мне вуду.

    То, как правила могут работать одну минуту, а потом казаться не такими, как браузер и другие промежуточные сетевые кеши взаимодействуют с правилами и правилами тестирования, часто сбивает с толку или сводит с ума. Когда я чувствую необходимость полностью изменить свою форму, я возился с mod_rewrite!

    После всего этого работает.Хотя я не планирую проходить этот ускоренный курс выходного дня в ближайшее время, я сам научился нескольким маленьким трюкам, возясь с веб-серверами и веб-сайтами и т. Д.

    План здесь состоит в том, чтобы просто добавить несколько интересных вещей, примеров, вещей, которые оказались полезными, вещей, которые работают на различных настройках сервера; по всей моей локальной сети есть apache, я постоянно натыкаюсь на старые файлы .htaccess, набитые прошлыми экспериментами по переписыванию, которые либо работали; и я добавляю их в свой список, иначе неудачно; и я удивлен, что в наши дни я все чаще понимаю, почему!

    Здесь нет ничего моего собственного изобретения.(. *). html $ 1.php

    начало переписывания .. Всякий раз, когда вы используете mod_rewrite (часть apache, которая выполняет всю эту магию), вам нужно сделать это только один раз для каждого файла .htaccess:

                     Параметры + SymlinksIfOwnerMatches
                     RewriteEngine на
                   

    перед любыми правилами перезаписи.+ FollowSymLinks должен быть включен для работы любых правил. Это требование безопасности механизма перезаписи. Обычно он включен в корне, и вам не нужно его добавлять, но это не повредит, и я вставлю его во все примеры на этой странице, на всякий случай.

    Следующая строка просто включает механизм перезаписи для этой папки. если эта директива находится в вашем основном файле .htaccess, то механизм ReWrite теоретически включен для всего вашего сайта.Но разумно всегда добавлять эту строку, прежде чем писать какие-либо перенаправления в любом месте.

    Примечание. Хотя некоторые директивы на этой странице могут казаться разделенными на две строки, в вашем файле .htaccess они должны находиться полностью в одной строке.

    Простая перезапись

    Проще говоря, Apache сканирует все входящие URL-запросы, проверяет совпадения в нашем файле .htaccess и перезаписывает эти совпадающие URL-адреса на все, что мы указываем.(. *). html $ 1.php [nc]

    Это удобно для всех, кто обновляет сайт со статического HTML (вы можете использовать .html или .htm (. *)) До динамических страниц PHP, где запросы к старым страницам автоматически переписываются на наши новые URL-адреса, и никто ничего не замечает. Посетители и поисковые системы могут получить доступ к вашему контенту в любом случае. В качестве дополнительного бонуса это позволяет нам легко разделить PHP-код и включенные в него html-структуры на два отдельных файла, что делает его хорошей идеей и упрощает редактирование и обновление.Часть [nc] в конце означает «Без регистра» или «без учета регистра», но мы еще вернемся к этому.

    Люди могут ссылаться на Any.html или something.php, но они всегда получают в браузере файл something.php, и это работает, даже если файла something.html не существует! но я сбиваюсь с пути ..

    В нынешнем виде это немного сложно. У людей по-прежнему будет файл something.html в адресной строке браузера, и они по-прежнему будут добавлять в закладки ваши старые URL-адреса .html.Поисковые системы также будут индексировать ваши ссылки как .htm. Некоторые даже утверждали, что использование одного и того же контента из двух разных мест может привести к наказанию вас со стороны поисковых систем. Это может вас беспокоить или не беспокоить, но если это так, mod_rewrite может творить чудеса.

                     # это сделает "настоящее" перенаправление http:
                     Параметры + SymlinksIfOwnerMatches
                     переписать двигатель на
                     rewriterule ^ (.+). htm $ http://yourdomain.org/$1.php [r = 301, nc]
                   

    На этот раз мы проинструктируем mod_rewrite отправить правильное HTTP-перенаправление «постоянно перемещенное», иначе; «301». Теперь, вместо того, чтобы просто перенаправлять на лету, браузер пользователя физически перенаправляется на новый URL-адрес, и в адресной строке браузера появляется файл what.php, поисковые системы и другие объекты-пауки автоматически обновляют свои ссылки до версий .php. Все выигрывают. И вы тоже можете не торопиться с обновлением.

    Непростая перезапись

    Возможно, вы заметили, что в приведенных выше примерах для сопоставления переменных используется регулярное выражение. Это просто означает …. сопоставьте часть внутри (. +) И используйте ее для создания «$ 1» в новом URL-адресе. Другими словами, (. +) = $ 1 у вас может быть несколько (. +) Частей, и для каждой из них mod_rewrite автоматически создает соответствующие $ 1, $ 2, $ 3 и т. файлы / (.+) / (. +). zip download.php? section = $ 1 & file = $ 2 [nc]

    позволит вам представить ссылку как:

                    http: //mysite/files/games/hoopy.zip
                  

    и в фоновом режиме это переведено на:

                     http: //mysite/download.php? section = games & file = hoopy
                   

    который может обработать какой-нибудь скрипт.Видите ли, многие поисковые системы просто не переходят по нашим? Generated = ссылкам. Так что, если вы создаете генерирующие страницы, это полезно. Однако только глупые поисковые системы не могут обрабатывать такие ссылки. Мы должны спросить себя: «Неужели мы действительно хотим, чтобы нас перечисляли глупые поисковые системы?» Google обработает несколько хороших параметров в вашем URL без каких-либо проблем, и (голодный, голодный) msn-бот поисковой системы не останавливается ни перед чем, чтобы получить эту страницу, иногда снова и снова и снова. blog / ([0-9] +) — ([a-z] +) http: // yourdomain.org / blog / index.php? archive = $ 1- $ 2 [NC]

    — отличный трюк, позволяющий любому получить доступ к архивам моего блога, выполнив:

                     http://yourdomain.org/blog/2003-nov
                   

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

                     http: // вашдомен.org / blog / index.php? archive = ноябрь 2003 г.
                   

    , который поймет ваш доменный блог. Легко увидеть, что с небольшим воображением и базовым пониманием регулярного выражения posix можно выполнять некоторые очень интересные манипуляции с URL-адресами.

    Сокращение URL-адресов

    Одним из распространенных способов использования mod_rewrite является сокращение URL-адресов. Более короткие URL-адреса легче запомнить и, конечно же, легче набрать.захватить (. *) /public/files/download/download.php$1

    Это правило преобразует URL этого пользователя:

                     http: // mysite / grab? file = my.zip
                   

    на стороне сервера, в:

                     http: //mysite/public/files/download/download.php? file = my.zip
                   

    , это маленькая уловка, которую я использую, среди прочего, для своего дистрибутива.Всем нравятся короткие URL-адреса, и вам тоже. Используя эту технику, вы можете переместить / public / files / download / в любое другое место вашего сайта, и все старые ссылки по-прежнему работают нормально. Просто измените файл .htaccess, чтобы он отображал новое местоположение. отредактируйте одну строку, и все готово. Это хорошо, потому что даже когда на вашем сайте много вещей, у вас могут быть такие классные ссылки, как это:

                     http://yourdomain.org/img/hotlink.png [NC]
                   

    Вы можете увидеть последнюю строку, разбитую на две, но это все одна строка (все директивы на этой странице).Давайте посмотрим, что он делает.

    Начнем с включения механизма перезаписи, как всегда.

    Первая строка RewriteCond позволяет прямым запросам (не с других страниц — «пустой реферер») проходить беспрепятственно. Следующая строка означает, что если браузер действительно отправил заголовок реферера и слово «yourdomain» отсутствует в его доменной части, то НЕОБХОДИМО перезаписать этот запрос.

    Важнейшая последняя строка RewriteRule инструктирует mod_rewrite перезаписать все совпадающие запросы (все, что не содержит «yourdomain» в его реферере), запрашивая гифки, jpeg или png на альтернативное изображение…. … другими словами, добавьте косую черту в начале строки RewriteRule. Но поскольку доступ к httpd.conf ограничен, это не относится к Just Host.

    Наследование

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

    Вы помните, как правила в верхних папках применяются ко всем папкам внутри этих папок.Мы называем это «наследованием». Обычно это просто работает. но если вы начнете создавать другие правила внутри подпапок, вы фактически уничтожите правила, уже применяемые к этой папке, из-за наследования или «потомства». Если вы предпочитаете не все правила, а только те, которые применяются к этой подпапке. вот небольшая демонстрация.

    Допустим, у меня есть правило в моем основном /.htaccess, которое перенаправляет запросы для файлов, заканчивающихся на .html, на их эквивалент .php, как в примере вверху этой самой страницы.Теперь, если по какой-либо причине мне нужно добавить некоторые правила перезаписи в мой файл /osx/. (.*). htm $ http://yourdomain.org/osx/$1.php [r = 301, nc]

    Найдите отличия в правиле вложенных папок. Вы должны добавить текущий путь к новому правилу. Теперь снова работает. Если вы помните это, вы можете копировать правила перезаписи повсюду.

    Заключение

    Короче говоря, mod_rewrite позволяет отправлять браузеры откуда угодно и куда угодно.Вы можете создавать правила, основанные не только на запрошенном URL-адресе, но и на таких вещах, как IP-адрес, агент браузера (например, отправка старых браузеров на разные страницы) и даже время суток; возможности практически безграничны.

    Тонкости синтаксиса mod_rewrite являются темой для гораздо более длинного документа, чем этот, и, если вы хотите поэкспериментировать с более продвинутыми правилами перезаписи, я настоятельно рекомендую вам ознакомиться с документацией по apache. Если вы используете какую-то операционную систему * nix (фактически, если у вас установлен apache в любой операционной системе), скорее всего, на вашем компьютере будет копия руководства по apache.Ознакомьтесь с этими отличными руководствами по mod_rewriting, чтобы узнать о сочных битах синтаксиса.

                http://www.ilovejackdaniels.com/apache/mod_rewrite-cheat-sheet/
                http://httpd.apache.org/docs/1.3/mod/mod_rewrite.html
                http://httpd.apache.org/docs/1.3/misc/rewriteguide.html
                http://forum.modrewrite.com/
                 

    Как удалить .html из URL?

    Как удалить.html из URL?

    Как удалить .html из URL статической страницы?

    Кроме того, мне нужно перенаправить любой URL-адрес с .html на адрес без него. (например, www.example.com/page.html www.example.com/page ).

    Ответ № 2:

    Чтобы удалить расширение . (.[A – Z] {3,9} /html/(.*) HTTP / RewriteRule. *% 1.html [L]

    Ответ № 7:

    Для тех, кто использует хостинг Firebase, ни один из ответов на этой странице не подойдет. Потому что вы не можете использовать .htaccess на хостинге Firebase. Вам нужно будет настроить файл firebase.json. Просто добавьте строку «cleanUrls»: true в свой файл и сохраните ее. Вот и все.

    После добавления строка firebase.json будет выглядеть так:

      {
      "hosting": {
        "public": "public",
        "cleanUrls": правда,
        "игнорировать": [
          "база..] +). html $ http://www.proofers.co.uk/new/$1 [R = 301, L]
      

    Ответ № 9:

    Использование .htaccess для перезаписи URL-адресов для статического HTML обычно не только не нужно, но и плохо сказывается на производительности вашего веб-сайта. Включение .htaccess также является ненужной уязвимостью безопасности — его отключение устраняет значительное количество потенциальных проблем. Те же правила для каждого файла .htaccess могут вместо этого помещаться в раздел для этого каталога, и он будет более производительным, если вы затем установите AllowOverride None , потому что ему не нужно будет проверять каждый каталог на наличие а .htaccess и более безопасен, потому что злоумышленник не может изменить конфигурацию vhost без корневого доступа.

    Если вам не нужен .htaccess в среде VPS, вы можете полностью отключить его и повысить производительность своего веб-сервера.

    Все, что вам нужно сделать, это переместить отдельные файлы из такой структуры:

      index.html
    about.html
    products.html
    terms.html
      

    В такую ​​структуру:

      index.html
    о / index.html
    продукты / index.html
    термины / index.html
      

    Ваш веб-сервер затем отобразит соответствующие страницы — если вы загрузите / about / , он будет рассматривать это как /about/index.html .

    Это не будет перезаписывать URL-адрес, если кто-то зайдет на старый, поэтому потребуется перенаправление, если оно было применено задним числом к ​​существующему сайту.

    Ответ № 10:

    Хороший вопрос, но, похоже, сбил с толку людей. Ответы почти поровну разделились между теми, кто думал, что Дэйв (ОП) сохранял свои HTML-страницы без и .html , и те, кто думал, что он сохраняет их как обычно (с .html ), но хотят, чтобы URL-адрес отображался без него. Хотя вопрос можно было бы сформулировать немного лучше, я думаю, ясно, что он имел в виду. Если бы он сохранял страницы без .html , его два вопроса («как удалить .html») и (как «перенаправить любой URL-адрес с .html») были бы точно такими же! Так что в этой интерпретации нет особого смысла. Кроме того, его первый комментарий (об избежании бесконечного цикла) и его собственный ответ, похоже, подтверждают это.

    Итак, давайте перефразируем вопрос и разберем задачу. Мы хотим достичь двух целей:

    1. Заметно удалите .html , если он является частью запрошенного URL (например, /page.html )
    2. Направьте обрезанный URL (например, / page ) обратно на фактический файл ( /page.html ).

    Нет ничего сложного в том, чтобы делать то и другое. (Мы могли бы достичь второго, просто включив MultiViews.) Задача состоит в том, чтобы сделать их и без создания бесконечного цикла.

    Ответ Дэйва выполнил свою работу, но он довольно запутанный и совсем не переносимый. (Извини, Дэйв.) Лукаш Хабжик, кажется, подчистил ответ Анмола, и, наконец, Амит Верма улучшил их обоих. Однако никто из них не объяснил , как их решения решили основную проблему — как избежать бесконечного цикла. Насколько я понимаю, они работают, потому что переменная THE_REQUEST содержит исходный запрос из браузера.Таким образом, условие ( RewriteCond% {THE_REQUEST} ) запускается только один раз. Поскольку он не запускается при перезаписи, вы избегаете сценария бесконечного цикла. Но тогда вы имеете дело с полным HTTP-запросом — GET , HTTP и всем остальным — что частично объясняет некоторые из уродливых примеров регулярных выражений на этой странице.

    Я собираюсь предложить еще один подход, который, на мой взгляд, легче понять. Я надеюсь, что это поможет будущим читателям понять код, который они используют, а не просто копировать и вставлять код, который они едва понимают, и надеяться на лучшее.% {REQUEST_URI} .html [КОНЕЦ]

    Давайте разберемся…

    Первое правило довольно простое. Условие соответствует любому URL-адресу, оканчивающемуся на .html (или .htm ), и выполняет перенаправление на URL-адрес без расширения имени файла. Это постоянное перенаправление , чтобы указать, что обрезанный URL-адрес является каноническим .

    Второе правило тоже простое. Первое условие будет выполнено, только если запрошенное имя файла — , а не — действительный каталог (! -D ).Второй будет пройден, только если имя файла относится к допустимому файлу ( -f ) с добавленным расширением .html. Если оба условия проходят, правило перезаписи просто добавляет «.html» к имени файла. И тут происходит волшебство… [END] . Да, это все, что нужно для предотвращения бесконечного цикла. Документация Apache RewriteRule Flags объясняет это:

    Использование флага [END] завершает не только текущий раунд перезаписи. обработка (как [L]), но также предотвращает любую последующую перезапись обработка происходит в контексте каталога (htaccess).(. *) $ 1.html

    затем удалите .html из всех ваших файлов, например. test.html стал просто тестом, а также, если вы хотите открыть файл из другого файла, также удалите из него .html и просто имя файла

    Ответ № 12:

    Чтобы удалить расширение .html из ваших URL-адресов, вы можете использовать следующий код в root / htaccess:

      #mode_rerwrite начать здесь
    
    RewriteEngine On
    
    # не применяется к существующим директорам, что означает, что если папка существует на сервере, ничего не меняйте и не запускайте правило.(. *) $ 1.html [NC, L]
      

    Спасибо

    Ответ 13:

    Используйте хэш-тег.

    Может быть не совсем то, что вам нужно, но он решает проблему удаления расширения.

    Допустим, у вас есть html-страница, сохраненная как about.html , и вам не нужно это надоедливое расширение, вы можете использовать хэш-тег и перенаправлять на нужную страницу.

     Переключатель  (window.location.hash.substring (1)) {
          case 'about':
          window.location = 'о.html ';
          перерыв;
      }
      

    Маршрутизация на yoursite.com # около приведет вас к yoursite.com/about.html . Я использовал это, чтобы сделать свои ссылки чище.

    Ответ 14:

    Внесу свой вклад в этот вопрос, улучшив ответ от @ amit-verma (https://stackoverflow.com/a/34726322/2837434):

    В моем случае у меня была проблема, из-за которой запускался RewriteCond% {REQUEST_FILENAME} .html -f (полагая, что файл существует), даже когда я этого не ожидал:

    % {REQUEST_FILENAME}.html давал мне /var/www/example.com/page.html для всех этих случаев:

    • www.example.com/page (ожидается)
    • www.example.com/page/ (тоже вполне ожидаемо)
    • www.example.com/page/subpage (не ожидается)

    Итак, файл, который он пытался загрузить (полагая, что было /var/www/example.com/page.html ), был:

    • www.example.com/page => / var / www / example / page.html (нормально)
    • www.example.com/page/ => /var/www/example/page/.html (не подходит)
    • www.example.com/page/subpage => /var/www/example/page/subpage.html (не подходит)

    Только первый фактически указывает на существующий файл, другие запросы выдавали мне 500 ошибок, поскольку он продолжал верить, что файл существует, и неоднократно добавлял .html .

    Решением для меня было заменить RewriteCond% {REQUEST_FILENAME}./%{REQUEST_URI}.html [QSA, L]

    Вот пример результата, который поможет вам разобраться во всех случаях:

    Учитывая, что у меня на сервере всего 2 HTML-файла (index.html и page.html)

    • www.example.com/index.html => перенаправляет на www.example.com
    • www.example.com/index => перенаправляет на www.example.com
    • www.example.com => отображает / var / www / example.ru / index.html
    • www.example.com/page.html => перенаправляет на www.example.com/page
    • www.example.com/page => отображает /var/www/example.com/page.html
    • www.example.com/page/subpage => возвращает 404 not found
    • www.example.com/index.html/ => возвращает 404 not found
    • www.example.com/page.html/ => возвращает 404 not found
    • www.example.com/test.html => возвращает 404 not found

    Больше 500 ошибок?


    Кроме того, чтобы помочь вам отладить свои перенаправления, рассмотрите возможность отключения сетевого кеша в вашем браузере (поскольку старые перенаправления 301 находятся в кеше, что может вызвать некоторые головные боли?):

    Ответ 15:

      RewriteRule /(.+)(.html)$ / $ 1 [R = 301, L]
      

    Попробуй 🙂 не знаю, работает ли.

    Использование редиректов — AWS Amplify

    Redirects позволяют веб-серверу перенаправлять навигацию с одного URL-адреса на другой.Общий причины для использования перенаправления включают: для настройки внешнего вида URL-адреса, чтобы избежать поломки ссылки на перемещать место размещения приложения или сайта, не меняя его адрес, а также изменять а запрошенный URL-адрес формы, необходимой для веб-приложения.

    Типы редиректов

    Существует несколько типов переадресации, поддерживающих определенные сценарии.

    Постоянное перенаправление (301)

    301 редирект предназначены для длительных изменений пункта назначения веб-адреса. История рейтинга в поисковых системах исходного адреса применяется к новому месту назначения. адрес.Перенаправление происходит на стороне клиента, поэтому на панели навигации браузера отображается в адрес назначения после перенаправления. Общие причины использования переадресации 301 включают:

    Временное перенаправление (302)

    302 редиректа предназначены для временного изменения места назначения веб-адреса.История рейтинга в поисковых системах исходного адреса не применяется к новому месту назначения. адрес. Перенаправление происходит на стороне клиента, поэтому на панели навигации браузера отображается в адрес назначения после перенаправления. Общие причины использования переадресации 302 включают:

    Перепишите (200)

    200 редиректов (перезаписей) предназначены для отображения контента с адреса назначения будто он был доставлен с исходного адреса.История рейтинга в поисковых системах продолжается применять на исходный адрес. Перенаправление происходит на стороне сервера, поэтому навигация в браузере бар показывает исходный адрес после перенаправления. Распространенные причины использовать 200 редиректов включают:

    • Для перенаправления всего сайта на новое место хостинга без изменения адреса сайта.

    • Для перенаправления всего трафика к одностраничному веб-приложению (SPA) на его страницу index.html для обработка с помощью функции маршрутизатора на стороне клиента.

    Не найдено (404)

    перенаправления 404 происходит, когда запрос указывает на несуществующий адрес.В целевая страница 404 отображается вместо запрошенной. Общие причины 404 перенаправление включает:

    • Чтобы избежать сообщения о неработающей ссылке, когда пользователь вводит неверный URL.

    • Для направления запросов к несуществующим страницам веб-приложения на его страницу index.html для обработка с помощью функции маршрутизатора на стороне клиента.

    Части редиректа

    редиректы состоят из следующего:

    • Исходный адрес — адрес, запрошенный пользователем.

    • Адрес назначения — адрес, который фактически обслуживает контент, который пользователь видит.

    • Тип перенаправления — Типы включают постоянное перенаправление (301), временное перенаправление. (302), перезапись (200) или не найдено (404).

    • Двухбуквенный код страны (необязательно) — значение, которое вы можете включить для сегментации пользователя. опыт использования вашего приложения по регионам.

    Для создания и редактирования переадресации выберите Перезапись и переадресация. настройки на левой панели навигации.

    Для массового редактирования перенаправления в редакторе JSON выберите Открыть текст редактор .

    Порядок переадресации

    Перенаправления выполняются сверху вниз.Убедитесь, что ваш заказ имеет желаемый эффект. Например, следующий порядок перенаправления вызывает все запросы для заданного пути под / docs / для перенаправления на тот же путь в / documents / , за исключением /docs/specific-filename.html , который перенаправляет на / документы / другое-имя-файла.html :

      /docs/specific-filename.html /documents/different-filename.html 301
    / docs / <*> / documents / <*>  

    Следующий порядок перенаправления игнорирует перенаправление specific-filename.html на different-filename.html :

      / docs / <*> / documents / <*>
    / документы / конкретное-имя-файла.html /documents/different-filename.html 301  

    Простая переадресация и перезапись

    В этот раздел мы включаем пример кода для распространенных сценариев перенаправления.

    Вы можете использовать следующий пример кода для постоянного перенаправления определенной страницы на новый адрес.

    Исходный адрес Адрес назначения Тип перенаправления Код страны

    / оригинал.html

    /destination.html

    постоянное перенаправление (301)

    JSON: [{«источник»: «/ оригинал.html «,» статус «:» 301 «,» цель «: «/destination.html», «condition»: null}]

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

    Исходный адрес Адрес назначения Тип перенаправления Код страны

    документов / <*>

    / документы / <*>

    постоянное перенаправление (301)

    JSON [{«source»: «/ docs / <*>«, «status»: «301», «target»: «/ documents / <*>«, «condition»: null}]

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

    Исходный адрес Адрес назначения Тип перенаправления Код страны

    <*>

    / индекс.html

    переписать (200)

    JSON [{«source»: «/ <*>«, «status»: «200», «target»: «/ index.html «, «condition»: null}]

    Вы можете использовать следующий пример кода, чтобы использовать перезапись для изменения поддомена, который появляется пользователю.

    Исходный адрес Адрес назначения Тип перенаправления Код страны

    https: // mydomain.com

    https: //www.mydomain.com

    переписать (200)

    JSON [{«source»: «https: // mydomain.com »,« status »:« 200 »,« target »: «https://www.mydomain.com», «condition»: null}]

    Вы можете использовать следующий пример кода для перенаправления путей в папке, которая не может быть найдено на пользовательской странице 404.

    Исходный адрес Адрес назначения Тип перенаправления Код страны

    / <*>

    /404.html

    не найдено (404)

    JSON [{«источник»: «/ <*>«, «статус»: «404», «цель»: «/ 404.html «, «condition»: null}]

    перенаправления для одностраничных веб-приложений (СПА)

    Большинство фреймворков SPA поддерживают HTML5 history.pushState () для изменения местоположения браузера без запуск запроса сервера.Это работает для пользователей, которые начинают свой путь с корень (или /index.html ), но не работает для пользователей, которые перейти прямо на любую другую страницу. Используя регулярные выражения, следующий пример наборы перепишите на 200 все файлы в index.html, за исключением конкретных расширений файлов указано в регулярном выражении.

    Исходный адрес Адрес назначения Тип перенаправления Код страны

    /index.html

    200

    JSON [{«источник»: « «, «status»: «200», «target»: «index.html», «condition»: null}]

    Перезапись обратного прокси

    В следующем примере используется перезапись для прокси-содержимого из другого места, чтобы Это пользователю кажется, что домен не изменился:

    Исходный адрес Адрес назначения Тип перенаправления Код страны

    / изображений

    https: // images.otherdomain.com

    переписать (200)

    JSON [{«источник»: «/ изображения», «статус»: «200», «цель»: «https: // изображения.otherdomain.com «,» condition «: null}]

    Завершающие слэши и чистые URL-адреса

    Для создания чистых URL-структур, таких как около вместо about.html , генераторы статических сайтов такие как Hugo создают каталоги для страниц с индексом.html ( /about/index.html ). Консоль Amplify автоматически создает чистые URL-адреса, добавляя в конце при необходимости косую черту. В таблице ниже основные моменты разные сценарии:

    Пользовательский ввод в браузере URL в адресной строке Обслуживания документов

    / около

    / около

    / об.html

    / о (когда о.html возвращает 404)

    / около /

    / о / индекс.html

    / около /

    / около /

    / о / индекс.html

    Заполнители

    Вы можете использовать следующий пример кода для перенаправления путей в структуре папок на а соответствующая структура в другой папке.

    Исходный адрес Адрес назначения Тип перенаправления Код страны

    / docs / <год> / <месяц> / <дата> /

    / documents / <год> / <месяц> / <дата> /

    постоянное перенаправление (301)

    JSON [{«источник»: «/ docs / <год> / <месяц> / <дата> / «, «status»: «301», «target»: «/ documents / <год> / <месяц> / <дата> / «, «condition»: null}]

    Строки запроса и путь параметры

    Вы можете использовать следующий пример кода, чтобы перенаправить путь к папке с именем что совпадает со значением элемента строки запроса в исходном адресе:

    Исходный адрес Адрес назначения Тип перенаправления Код страны

    / docs? Id =

    / documents /

    постоянное перенаправление (301)

    JSON [{"источник": "/ docs? Id = ", "статус": "301", "цель": "/ documents / ", "condition": null}]

    Вы можете использовать следующий пример кода для перенаправления всех путей, которые не могут быть найдены в а заданный уровень структуры папок для индексации.html в указанной папке.

    Исходный адрес Адрес назначения Тип перенаправления Код страны

    / documents / / /

    / документы / index.html

    404

    JSON [{"источник": "/ документы / / / ", "статус": "404", «цель»: «/ документы / индекс.html "," condition ": null}]

    Редирект на основе региона

    Вы можете использовать следующий пример кода для перенаправления запросов в зависимости от региона.

    Исходный адрес Адрес назначения Тип перенаправления Код страны

    / документы

    / документы / нас /

    302

    <США>

    JSON [{"источник": "/ документы", "статус": "302", "цель": "/ документы / нас /", "condition": ""}]

    Скрыть расширение HTML в URL-адресах с помощью htaccess · GitHub

    Apache: Скрыть расширение HTML в URL-адресах с помощью htaccess · GitHub

    Мгновенно делитесь кодом, заметками и фрагментами.

    Apache: скрыть расширение HTML в URL-адресах с помощью htaccess

    долл. США $
    # Этот тег загружает модуль перезаписи
    # включить механизм перезаписи
    RewriteEngine на
    # Установите корневой каталог
    RewriteBase /
    # Удалите.ПОЛУЧИТЬ \ (. *) \. Html \ HTTP
    RewriteRule (. *) \. Html $ 1 [R = 301]
    # Удалить индекс и сослаться на каталог
    RewriteRule (. *) / Index $ 1 / [R = 301]
    # Удалить косую черту в конце, если это не каталог
    RewriteCond% {REQUEST_FILENAME}! -D
    RewriteCond% {REQUEST_URI} /
    RewriteRule (.*) / 1 доллар США [R = 301]
    # Перенаправить запрос в html файл, ** но без перенаправления (для ботов) **
    RewriteCond% {REQUEST_FILENAME} .html -f
    RewriteCond% {REQUEST_URI}! /
    RewriteRule (. *) $ 1 \ .html [L]
    # ------------- альтернативное удаление.html версия, 2020 -------------------
    #remove html file extension https://example.com/page.html
    # на https://example.com/page
    RewriteEngine на
    RewriteCond% {REQUEST_FILENAME}! -D
    RewriteCond% {REQUEST_FILENAME}! -F
    RewriteRule ^ ([^ \.] +) $ 1.html [NC, L]
    Поисковая система может проиндексировать эти страницы как повторяющееся содержание,
    , чтобы преодолеть это, добавьте метатег в файл HTML.
    Пример:
    Вы не можете выполнить это действие в настоящее время.Вы вошли в систему с другой вкладкой или окном. Перезагрузите, чтобы обновить сеанс. Вы вышли из системы на другой вкладке или в другом окне. Перезагрузите, чтобы обновить сеанс. .

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

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