Я переписываю, используя .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"

2
anscmc 11 Фев 2021 в 21:57

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]

Обязательно проверьте его после очистки кеша браузера.

0
anubhava 11 Фев 2021 в 19:57