Intereting Posts
Это лучший формат CSV-файла для импорта в базу данных MySQL Валютный символ в пурпуре Невозможно вставить данные формы в базу данных MySQL многократное выделение со списком Источник события PHP продолжает выполнять Найти текстовый текст в нескольких файлах документов Word Альтернатива функции money_format () в PHP на платформе Windows php imagemagick создает TIFF с черепичной пирамидой Есть ли короткое замыкание ИЛИ в PHP, которое возвращает самое левое значение? Неизвестно: не удалось открыть окно «0ff» (include_path = '.: / Tmp: / usr / lib / php: / usr / local / lib / php') в Unknown в строке 0 Как PHP отслеживает созданные объекты? Перемещение нескольких объектов по ссылкам без повторения Рекурсивно заменить ключи в массиве Как отредактировать то, что отображается в шаблоне метадолей одного продукта Woocommerce? таблица обновляет пустое пространство, когда пользователь ничего не вводит в текстовое поле

Как скрыть расширение .html с URL-адреса веб-сайта

Я знаю, что этот вопрос задавали раньше, но кто-нибудь знает, как можно скрыть .html расширения. Я пробовал много кодов и многие ответы из https://stackoverflow.com/, но я не вижу результата. То, что я снова спрашиваю у

У меня статический сайт, и я хотел удалить расширение, чтобы очистить мои URL. Я работал со статическими html-файлами.

Прежде чем удалять расширение, URL-адрес будет читать website.com/about.html .

С удалением расширения он будет выглядеть как website.com/about. Надеюсь, это было ясно.

У меня есть файл .htaccess, и я пробовал многие из кодов, но он не работает. Вот некоторые коды

 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)\.html$ /$1 [L,R=301] RewriteCond %{THE_REQUEST} \ /(.+/)?index(\.html)?(\?.*)?\ [NC] RewriteRule ^(.+/)?index(\.html)?$ /%1 [R=301,L] RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteRule ^(.+)\.html$ /$1 [R=301,L] RewriteCond %{SCRIPT_FILENAME}.html -f RewriteRule [^/]$ %{REQUEST_URI}.html [QSA,L] RewriteCond %{THE_REQUEST} ^[AZ]{3,9}\ /index\.html\ HTTP/ RewriteRule ^index\.html$ http://%{HTTP_HOST}/ [R=301,L] RewriteEngine On RewriteBase / RewriteCond %{SCRIPT_FILENAME} !-f RewriteCond %{SCRIPT_FILENAME} !-d RewriteRule ^(.*)$ $1.html [NC,L] RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.html -f RewriteRule ^(.*)$ $1.html RewriteBase / RewriteEngine on RewriteRule ^(.*)\.htm$ $1.html [nc] RewriteCond %{REQUEST_FILENAME}.html -f RewriteRule !.*\.html$ %{REQUEST_FILENAME}.html [L] 

однако я не вижу никаких результатов … 🙁

У вас отменено ваше правило (первый из них будет работать иначе):

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

Исходным правилом был RewriteRule ^(.*)\.html$ $1 [L] который переводится как «Если запрашиваемое имя ресурса заканчивается на .html то выдается перенаправление в браузер, говорящее ему, чтобы спросить нас, есть ли у нас что-нибудь в том же имя без HTML ". Это приводит к 404 (так как Apache не имеет ничего, что могло бы служить для меньшего ресурса .html ').

Переключив .html в пункт назначения RewriteRule ^(.*)$ $1.html [L] мы изменим правило: «Если запрашиваемое имя ресурса не является файлом или каталогом на диске, попробуйте перенаправить запрос ( внутренне, не сообщать браузеру), как будто он закончился в .html ".

Обратите внимание, что для такой задачи вам не требуется сложный (по своей природе) RewriteRules.

Модуль mod_negotiation apache, часто включаемый по умолчанию, обеспечивает такое поведение с помощью опции Multivews .

Если сервер получает запрос для / some / dir / foo и / some / dir / foo не существует, тогда сервер считывает каталог, ищущий все файлы с именем foo. *, И эффективно подделывает карту типа, которая называет все эти файлы, назначая им те же типы носителей и кодировки содержимого, которые он имел бы, если бы клиент попросил одного из них по имени. Затем он выбирает наилучшее соответствие требованиям клиента и возвращает этот документ.

.ie, запрашивающий foo/bar будет служить foo/bar если это каталог и будет seak для foo/bar.html , foo/bar.txt и т. д., если нет.

Вам просто нужно убедиться, что этот параметр активирован в вашем текущем контексте (например, Directory)

 Options +Multiviews 

Посмотрите на это сообщение http://alexcican.com/post/how-to-remove-php-html-htm-extensions-with-htaccess/ Я еще не пробовал, но демонстрация кажется довольно убедительной

использовать это

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