Добавить исключение в правило .htaccess

#php #html #.htaccess #whmcs

#php #HTML #.htaccess #whmcs

Вопрос:

Я использую следующий код, чтобы иметь полные дружественные SEO-ссылки без .html в ссылке

 ### START - SEO - DO NOT EDIT
RewriteEngine On

RewriteCond %{THE_REQUEST} ^(GET|HEAD) /([^ ] ).html
RewriteRule ^ /%2/ [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^/(.*?)/?$
RewriteCond %{DOCUMENT_ROOT}/%1.html -f
RewriteRule ^ /%1.html [L] 
### END - SEO - DO NOT EDIT
 

Моя проблема связана с моей установкой WHMCS, поскольку ссылка на базу знаний для объявлений index.php?rp=title-of-announcement.html и с моим правилом перенаправляется на index.php?rp=title-of-announcement witohout .html, и go tot 404 не найден.

Как я могу решить или добавить исключение из моего правила в index.php ?

Спасибо

Комментарии:

1. Проблема в том, что вы проверяете, %{THE_REQUEST} содержит .html ли она , но эта переменная содержит полную строку HTTP-запроса. Замените это на что-то, что проверяет только URL-адрес. (Так, например, RewriteRule, который соответствует путям, заканчивающимся на .html , для этого даже не требуется RewriteCond .)

2. RewriteCond %{THE_REQUEST} ^(GET|HEAD) /([^ ] ).html также совпадает index.php?rp=title-of-announcement.html . Вам потребуется еще одна секунда перезаписи, чтобы исключить его из вашего текущего набора правил. Включите это просто ниже RewriteEngine RewriteCond %{QUERY_STRING} !.html$ .