Não importa em que ordem as regras são colocadas no htaccess?

8

Espero que esta seja uma simples resposta SIM ou NÃO (especifique porquê)

Q1: Importa em que ordem as regras são colocadas no htaccess? Já que são itens completamente separados: por exemplo

Q2: Se sim, estou aplicando o pedido correto? a fim de acelerar o motor de htacces e não sobrecarregá-lo com regras desnecessárias?

Q3: algumas dicas sobre o que desabilitar / adicionar aqui são bem-vindas +1!

# DirectoryIndex index.php /index.php
AddDefaultCharset UTF-8
RewriteEngine on
# Options All
# Options +FollowSymLinks
# Options +FollowSymLinks -Indexes -ExecCGI
# RewriteBase /

#####################################################

<IfModule mod_headers.c>
    ExpiresActive On
    ExpiresDefault M172800
    Header unset ETag
    FileETag None
    Header unset Pragma

    ##### STATIC FILES
    <FilesMatch "\.(ico|jpg|png|gif|svg|swf|css|js|fon|ttf|eot|xml|pdf|flv)$">
        ExpiresDefault M1209600
        Header set Cache-Control "public, max-age=1209600"
    </FilesMatch>

    ##### DYNAMIC PAGES
    <FilesMatch "\.(php)$">
        ExpiresDefault M604800
        Header set Cache-Control "public, max-age=604800"
    </FilesMatch>
</IfModule>

#####################################################

#  /page123 and /page123/ will all go to /page123.php
RewriteRule ^(.+)/$  /$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

####################################################

# NO WWW   http://www. becomes always http://
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

##############################################################
# add own extensions that will be interpreted as php
AddType application/x-httpd-php .php
AddType image/svg+xml svg svgz
AddType text/css css
AddType text/javascript js
AddEncoding gzip svgz

##############################################################

ErrorDocument 500 /
ErrorDocument 404 /
    
por Sam 16.12.2010 / 09:18

3 respostas

9

Bem, arquivos .htaccess usam o mesmo formato que o arquivo de configuração regular do Apache, então as mesmas regras se aplicam.

A maioria das configurações não depende da ordem, mas algumas dependem da configuração.

RewriteRule e RewriteCond , por ex. são sensíveis à ordem, então, nesse caso, a resposta é SIM.

Ver, por exemplo,

link

para uma explicação da ordem em que eles são avaliados.

    
por 16.12.2010 / 14:11
4

Isso importa. Citando a documentação de RewriteRule :

The order in which these rules are defined is important - this is the order in which they will be applied at run-time.

    
por 21.07.2015 / 17:42
-1

Eu tenho a mesma preocupação postada, mas esta é uma perspectiva do site de administração do servidor que permite que eles reiniciem o apache após uma alteração na configuração do servidor apache.

Até agora, a melhor resposta que recebi é listar diretivas relacionadas a arquivos primeiro.

Isso faz sentido relacionado à necessidade do apache de gerenciar diretórios e instruções de htaccess em cada diretório.

Portanto, liste as diretivas relacionadas a arquivos primeiro, depois os blocos óbvios para finalizar o processo de htaccess do apache na ordem do óbvio.

Possível solução para otimizar as solicitações: - solicitar correções relacionadas ao url - restrições relacionadas ao diretório - Restrições relacionadas ao índice - restrições relacionadas a arquivos - restrições de proxy < - matar todos - agente do usuário vazio < - kill all ... a lista é divertida sem fim

Minha preocupação relacionada à sequência de diretivas. Por exemplo, devo definir as diretivas Index, file e Header antes de RewriteConds?

    
por 18.02.2015 / 23:18