Перенаправление с красивого URL-адреса на URL-адрес .html

Недавно я перешел с использования Wordpress на статический сайт только на html. Когда я переделывал каждую страницу (всего их 6), я сохранял одно и то же имя URL.

Пример: https://reactiongaming.us/alteriwnet/ теперь https://reactiongaming.us/alteriwnet.html

Моя проблема заключается в том, что старые ссылки и результаты поиска Google содержат версию responsegaming.us/alteriwnet/, что приводит к ошибке 404. Я пробовал различные методы .htaccess для «красивых URL-адресов, но ни один из них не работал. Обычно эти вопросы задавались о том, как перенаправить с URL-адреса .html на красивый URL-адрес, но я пытаюсь сделать наоборот.

Всего мне нужно перенаправить только 6 URL-адресов с responsegaming.us/example/ на responsegaming.us/example.html. Есть ли .htaccess или другой способ добиться этого?

Я пытался:

RewriteCond %{THE_REQUEST} \.html [NC]
    RewriteRule ^(.*)\.html$ /$1 [R=302,L]

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

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

Laurent S. 11.12.2020 13:46

«Я пробовал разные методы .htaccess» — пожалуйста, прочитайте Как спросить. Вы должны показать нам, что вы пытались.

CBroe 11.12.2020 13:55

В простейшей форме RewriteRule (.*)/$ $1.html [R=301] должно помочь. Если у вас есть настоящие папки, которые нужно исключить из этого правила, перед ними можно поставить RewriteCond с обычным условием !-d. И шаблон .* можно сделать более конкретным, если это необходимо.

CBroe 11.12.2020 13:58
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
1
3
150
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете использовать директиву Redirect для перенаправления ваших старых URL-адресов в новый формат URL-адресов.

Redirect 301 /alteriwnet/ /alteriwnet.html

Это перенаправит 301 /alteriwnet на /alteriwnet.html.

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

RedirectMatch 301 ^/(alteriwnet|path2|path3)/?$ /$1.html

Использованная литература :

Это кажется довольно простым. Как реализовать это в .htaccess? Просто скопировать код?

Bob Smith 11.12.2020 14:09

@БобСмит Да. Вы можете использовать его в своем htaccess .

Amit Verma 11.12.2020 14:10

Я добавил ваш первый пример в свой .htaccess, но он не работает. Есть идеи?

Bob Smith 11.12.2020 14:29

@BobSmith У вас есть другие директивы в htaccess, которые могут конфликтовать с этой? Директива Redirect не будет работать, если у вас есть RewriteRule, который обрабатывает non-existant файлы, поскольку директива RewriteRule имеет приоритет над Redirect

Amit Verma 11.12.2020 14:40

Всего одна строчка от тебя. "Перенаправить 301 /alteriwnet/alteriwnet.html"

Bob Smith 11.12.2020 14:43

@БобСмит Хорошо. Вы получаете какую-либо ошибку с этим Redirect? Какой URL вы пробовали?

Amit Verma 11.12.2020 14:46

Я попробовал responsegaming.us/alteriwnet и получил ошибку 404.

Bob Smith 11.12.2020 14:49

@BobSmith Я добавил косую черту к шаблону в Redirect . Пожалуйста, попробуйте обновленную версию.

Amit Verma 11.12.2020 14:51

Обновил, но тот же результат 404.

Bob Smith 11.12.2020 14:58

вроде не читает, но вчера при попытке точно сломал сайт с 500 ошибками. Может это кеш браузера? У меня есть cloudflare в режиме разработки, и я попробовал второй браузер с теми же результатами.

Bob Smith 11.12.2020 15:16

Я собираюсь связаться с моим хостом и посмотреть, не разорван ли он. Ставлю "запретить от всех" а сайт все равно работает так что не читает его.

Bob Smith 11.12.2020 15:32

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

Amit Verma 11.12.2020 15:40

В этом была проблема. Я использовал ваше второе предложение, и оно отлично работает. Спасибо.

Bob Smith 11.12.2020 20:52

Другие вопросы по теме