htaccess редирект 301 перед другими правилами

Мой htaccess выглядит так:

# Prevent directory listings
Options -Indexes

redirect 301 /old.html http://blablabla.pl/new
redirect 301 /other-page.html http://blablabla.pl/new-page
redirect 301 /xxx.html http://blablabla.pl/zzz

# Prevent visitors from viewing files directly
<FilesMatch "\.(sdb|md|html|txt)$">
    <IfModule mod_authz_core.c>
        Require all denied
    </IfModule>
    <IfModule !mod_authz_core.c>
        Order deny,allow
        Deny from all
    </IfModule>
</FilesMatch>

# URL rewrites
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(inc/|themes/|tmp/).*\.(php|html)$ - [F,L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^ index.php [L]
</IfModule>

Я использую CMS, которые используют html-файлы в качестве шаблонов (есть переменные, php-код и т. д.). В htaccess этой CMS есть правила, запрещающие посетителям просматривать html-файлы напрямую. Я переместил одну страницу на эту CMS и хотел сделать 301 редирект со старых страниц, но он не работает - я получаю ошибку 403 запрещено. Есть ли способ выполнить перенаправление 301 перед другими правилами?


person dbx    schedule 22.09.2017    source источник
comment
Прокомментируйте Options строку и все FilesMatch и повторно протестируйте свои правила 301.   -  person anubhava    schedule 22.09.2017
comment
Это будет работать, но это не решение.   -  person dbx    schedule 22.09.2017
comment
Сначала протестируйте и узнайте, работает он или нет. Это только для целей тестирования.   -  person anubhava    schedule 22.09.2017
comment
Да - работает (даже без комментирования строки Options).   -  person dbx    schedule 22.09.2017
comment
Хорошо, можешь пояснить, что FilesMatch должен делать?   -  person anubhava    schedule 22.09.2017


Ответы (1)


Рабочее решение:

(...)
# Prevent visitors from viewing files directly
<FilesMatch "\.(sdb|md|html|txt)$">
    <IfModule mod_authz_core.c>
        Require all denied
    </IfModule>
    <IfModule !mod_authz_core.c>
        Order deny,allow
        Deny from all
    </IfModule>
</FilesMatch>

<FilesMatch "(old\.html)|(other-page\.html)|(xxx\.html)">
    Allow from all
    Satisfy any
</FilesMatch>
(...)
person dbx    schedule 26.09.2017