2017-09-22 1 views
0

Mon apparence htaccess comme ceci:htaccess redirect 301 avant les autres règles

# 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> 

J'utilise la CMS qui utilisent des fichiers html sous forme de modèles (il y a des variables, le code php, etc.). Dans l'accès à ce CMS, il y a des règles pour empêcher les visiteurs de voir les fichiers html directement. J'ai déplacé une page vers ce CMS et j'ai voulu faire une redirection 301 à partir d'anciennes pages mais cela ne fonctionne pas - je reçois 403 erreur interdite. Existe-t-il un moyen d'exécuter la redirection 301 avant d'autres règles?

+0

Commentaire ligne 'Options' et' tous FilesMatch' et refaites le test de vos 301 règles. – anubhava

+0

Cela fonctionnera mais ce n'est pas une solution. – insanebear

+0

Premier test et découvrez si cela fonctionne ou non. Ceci est seulement à des fins de test. – anubhava

Répondre

0

Solution de travail:

(...) 
# 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> 
(...)