Какой вариант лучше всего использовать при попытке показать example.com/about example.com/about.html и без изменения URL-адреса на /about.html. Прямо сейчас я пытаюсь использовать следующий код, он просто возвращает ошибку 404.
RewriteRule ^/about$ https://example.com/about.html [R=301,L]
Редактировать # 1 в w3dk В настоящее время у меня включен режим мультиэкранного просмотра, но я все равно получаю ошибку 404. Вот моя текущая настройка в VirtualHost
<Directory /var/www/public_html>
Options All +MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Вместо использования mod_rewrite для внутренне переписать запрос, вы можете просто использовать MultiViews (mod_negotiation) вместо этого:
Options +MultiViews
mod_rewrite позволяет вам выполнять более сложную перезапись URL-адресов, однако, если все, что вы делаете, это удаляет расширение файла, тогда MultiViews будет достаточно - это то, для чего он предназначен.
Когда вы делаете запрос на /about
(URL / файл без расширения в допустимом каталоге), то при включенных MultiViews mod_negotiation будет искать файл, соответствующий ожидаемому типу mime, и возвращать его как внутренний запрос.
ОБНОВИТЬ:
Options All +MultiViews
Это недопустимый синтаксис (я предполагаю, что вы должны быть на Apache 2.2, так как это приведет к ошибке при запуске на Apache 2.4). Как отмечено в Документы Apache:
Предупреждение
СмешиваниеOptions
с+
или-
с теми, у кого нет - недопустимый синтаксис и может привести к неожиданным результатам.
Выражать All
и MultiViews
вам понадобятся две директивы:
Options All
Options +MultiViews
All
является значением по умолчанию (в Apache 2.2), поэтому в этом нет необходимости. Однако было бы предпочтительнее указать только те параметры, которые вам требуются в одной директиве, например:
Options FollowSymLinks Includes MultiViews
не могли бы вы попробовать вот так: я думаю, это сработает
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^about$ https://example.com/about.html [R=301,L]
Вы также можете использовать перенаправление:
Redirect 301 /about http://example.com/about.html
Redirect 301 /any_dir/about http://example.com/about.html