#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
. Вам потребуется еще одна секунда перезаписи, чтобы исключить его из вашего текущего набора правил. Включите это просто ниже RewriteEngineRewriteCond %{QUERY_STRING} !.html$
.