Как сделать исключение из правила перезаписи .htaccess?

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

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


Есть идеи?

10000