Я переписываю, используя .htaccess, чтобы удалить " .html " расширения с моего сайта. Однако я использую URL-адрес в функции для передачи параметра на другую страницу (mysite.com/locations#12345)
Мои правила перезаписи следующие:
RewriteCond %{THE_REQUEST} /([^.]+).html [NC]
RewriteRule ^ /%1 [NC,L,R]
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^ %{REQUEST_URI}.html [NC,L]
Я пробовал это сделать:
RewriteCond %{THE_REQUEST} /locations/([^.]+) [NC]
RewriteRule ^ /locations%1 [NC,L,R]
Но я получаю " mysite.com/locations%20HTTP/2#12345"
Всего 1 ответ
Вам необходимо отключить DirectorySlash
, чтобы отключить завершающую косую черту для каталогов, а также выключить Indexes
, чтобы не отображать содержимое каталога.
DirectorySlash Off
Options +FollowSymLinks -MultiViews -Indexes
RewriteEngine On
RewriteCond %{THE_REQUEST} s/+([^.]+).html[?s] [NC]
RewriteRule ^ /%1 [L,R=302]
RewriteCond %{DOCUMENT_ROOT}/$1.html -f
RewriteRule ^(.+?)/?$ $1.html [L]
Обязательно проверьте его после очистки кеша браузера.