Apache2: <Files>не применяется для замены перезаписи - PullRequest
1 голос
/ 10 февраля 2020

Учитывайте это .htaccess в сети root.

RewriteEngine on
RewriteBase /
RewriteRule "^pretty/(.*)" index.php?pretty=$1

Order Allow,Deny
Deny from all
<Files index.php>
  Allow from all
</Files>

/pretty/sweet правильно переписано в /index.php?pretty=sweet (с отключенной второй половиной).

Однако, Я получаю 403 Запрещено (с включенной второй половиной)

Я предполагал, что подстановка URL применяется сначала , а затем <Files index.php> будет соответствовать замещенный URL, позволяя access.

Что я здесь упускаю или неправильно понимаю, и как мне это исправить?

1 Ответ

2 голосов
/ 10 февраля 2020
Директивы

RewriteRule и Allow/Deny относятся к разным модулям Apache. Их порядок загрузки может отличаться от того, что вы используете в .htaccess.

Я предлагаю вам придерживаться самого mod_rewrite следующим образом:

RewriteEngine on
RewriteBase /

RewriteRule ^pretty/(.*)$ index.php?pretty=$1 [L,QSA]

# block all files except some known files
RewriteCond %{REQUEST_URI} !(?:/|/index\.php|.+\.(?:js|css|jpe?g|png|gif))$ [NC]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [F]
...