Отменить RewriteRule в htaccess - PullRequest
1 голос
/ 06 февраля 2020

Есть 2 RewriteRules для постоянной ссылки в php.

RewriteRule ^(.*).htm index.php [NC,QSA,L]
RewriteRule ^(.*).html index.php [NC,QSA,L]

Мне нужно просмотреть файл c html:

/uploads/themes/mail-signature/mail-signature.html

Но когда я вхожу http://example.com/uploads/themes/mail-signature/mail-signature.html показывает index.php.

Как мне отменить эти правила?

1 Ответ

0 голосов
/ 06 февраля 2020
RewriteRule ^(.*).htm index.php [NC,QSA,L]
RewriteRule ^(.*).html index.php [NC,QSA,L]

Ваше второе правило на самом деле ничего не делает, так как любые .html запросы будут перехвачены первым правилом. Таким образом, второе правило может быть удалено.

Затем вы добавляете условие к первому правилу, которое исключает указанный c URL, к которому вы пытаетесь обратиться. Например:

RewriteCond %{REQUEST_URI} !^/uploads/themes/mail-signature/mail-signature\.html$
RewriteRule \.html?$ index.php [NC,L]

Флаг QSA здесь не требуется, так как любая строка запроса будет проходить по умолчанию.

Префикс ^(.*) в вашем RewriteRule pattern не требуется, так как вы не используете эту обратную ссылку.

Вы должны backsla sh экранировать любые буквенные точки в регулярном выражении, например. \.htm, иначе вы соответствуете любому персонажу, например. "Xhtm". И, вероятно, вы хотите сопоставлять только те URL-адреса, которые заканчиваются на .htm или .html? Ваше оригинальное регулярное выражение будет соответствовать "htm" в любом месте запрошенного URL.

...