.htaccess sintaxe Multiple RewriteEngine on

6
IXN 2015-12-07 04:42.

Estou aprendendo a manter meu próprio site WP. Depois de muita leitura, acabei com meu arquivo htaccess "completo" que se parece com isso

DirectoryIndex index.php

# Disable directory listings
Options -Indexes
# PROTECT htaccess file
<Files .htaccess>
Order Allow,Deny
Deny from all
</Files>
# PROTECT WP-CONFIG
<Files wp-config.php>
Order Allow,Deny
Deny from all
</Files>

# Block Hotlinking
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_REFERER}     !^$ RewriteCond %{REQUEST_FILENAME} -f RewriteCond %{REQUEST_FILENAME} \.(jpeg|jpg|png)$           [NC]
RewriteCond %{HTTP_REFERER}     !^http://([^.]+\.)?example\. [NC]
RewriteCond %{HTTP_REFERER}     !google\.                       [NC]
RewriteRule \.(gif|jpeg|jpg|png)$ http://example.com/wp-content/images/hotlink.jpg [F,NC,L] </ifModule> # redirect Mobile from Blogger <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{QUERY_STRING} ^m=1$
RewriteRule (.*) $1? [R=301, L] </IfModule> # Block the include-only files. <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteRule ^wp-admin/includes/ - [F,L] RewriteRule !^wp-includes/ - [S=3] RewriteRule ^wp-includes/[^/]+\.php$ - [F,L]
RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L]
RewriteRule ^wp-includes/theme-compat/ - [F,L]
</IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

A maior parte é composta por copiar, adaptar e colar código de várias fontes. Como sou um novato autodidata, tenho as seguintes perguntas:

  1. A ordem dos trechos de código desempenha um papel? Está correto no exemplo acima?

  2. Tudo isso é repetitivo

    <IfModule mod_rewrite.c>
    RewriteEngine On
    ...
    </IfModule>
    

correto ou deve-se de alguma forma combiná-los e evitar várias chamadas para ele?

1 answers

11
MrWhite 2015-12-07 16:11.
  1. A ordem dos trechos de código desempenha um papel? Está correto no exemplo acima?

Sim, a ordem das diretivas nos .htaccessarquivos config ( ) do Apache pode ser importante. Na verdade, simplesmente ter diretivas na ordem errada é uma causa comum de erro.

Com o WordPress, as pessoas muitas vezes cometem o erro de incluir redirecionamentos canônicos (ou seja, HTTP para HTTPS e não www para www etc.) e / ou diretivas de bloqueio após as diretivas do WordPress (front-controller) - é improvável que funcione (embora isso depende das diretivas / módulos usados).

Principalmente, você deve sempre ter redirecionamentos externos antes de regravações internas .

No que você postou, a ordem das diretivas parece OK.

Você deve notar que diferentes módulos (mod_rewrite, mod_alias, etc.) são amplamente independentes e rodam em momentos diferentes. Mas, para cada módulo, as diretivas são executadas de cima para baixo.

RewriteEngine On

Não importa muito, mas RewriteEnginesó precisa ocorrer uma vez no arquivo, de preferência no topo, antes de qualquer diretiva mod_rewrite (só porque é mais lógico e fácil de ler dessa forma). No entanto, ele pode ser colocado em qualquer lugar no arquivo e ainda funcionará (à custa da legibilidade)! Estritamente falando, se você tiver várias RewriteEnginediretivas, a última vence e controla o arquivo inteiro. Portanto, se a última RewriteEnginediretiva fosse RewriteEngine Off, ela seria Offpara todo o arquivo!

<IfModule mod_rewrite.c>

No código que você postou, verificar se o módulo foi carregado várias vezes é desnecessário. Na verdade, você provavelmente não precisa verificar isso. Seu site pode rodar "OK" (ou você ainda deseja permitir o acesso) sem o mod_rewrite habilitado? Caso contrário, não há necessidade de verificar isso - ele deve simplesmente falhar com um estado de erro apropriado.

Veja minha resposta à seguinte pergunta dos webmasters para obter mais detalhes sobre isso: A verificação de mod_write é realmente necessária?

RewriteBase /

Ter várias RewriteBasediretivas deve ser evitado, embora funcione bem neste caso. A última RewriteBase diretiva no arquivo de configuração ganha e controla todo o arquivo de configuração (como a RewriteEnginediretiva mencionada acima). Se você incluir uma RewriteBasediretiva, ela deve ser incluída apenas uma vez, imediatamente abaixo da RewriteEnginediretiva.

Acontece que, além do pequeno erro mencionado abaixo, você não precisa realmente da RewriteBasediretiva no arquivo postado acima. (A RewriteBasediretiva substitui o prefixo do diretório que é adicionado às substituições de caminho relativo no RewriteRule. Você não tem nenhuma substituição de caminho relativo - além das mencionadas abaixo.)

Ter repetição em .htaccess é comum quando vários módulos estão editando-o automaticamente. Codificando manualmente o arquivo de configuração (recomendado), isso pode ser evitado.

RewriteRule (.*) $1? [R=301, L]

Esta linha está errada. Por ser um redirecionamento externo , você realmente deve ter um prefixo de barra no exemplo de substituição. /$1?(embora a RewriteBasediretiva definida em outro lugar esteja realmente salvando você - embora isso pareça um pouco de "sorte" em vez de ser intencional).

Mas, o mais importante, você deve remover o espaço nas RewriteRulebandeiras, ou seja. [R=301,L]. Um espaço é um delimitador nos arquivos de configuração do Apache (ou seja, muito especial). Ter um espaço aqui resultará em um erro 500 do Servidor Interno, já que o último argumento (os sinalizadores ) termina prematuramente e é visto como [R=301,- o que é sintaticamente inválido.

MORE COOL STUFF

Jana Duggar: tudo o que ela disse sobre o amor e sua janela de 5 anos para encontrar o 'escolhido'

Jana Duggar: tudo o que ela disse sobre o amor e sua janela de 5 anos para encontrar o 'escolhido'

Jana Duggar foi aberta sobre sua busca pelo amor. Aqui está tudo o que ela disse sobre o assunto e sua janela de cinco anos para o casamento.

Sam Heughan sabe exatamente o que vai tirar do set de 'Outlander' - 'Eu me sinto como Jamie quando os coloco'

Sam Heughan sabe exatamente o que vai tirar do set de 'Outlander' - 'Eu me sinto como Jamie quando os coloco'

O astro de 'Outlander', Sam Heughan, revelou recentemente o que vai levar do set para relembrar Jamie Fraser, o papel que o tornou uma estrela.

A música dos primeiros Beatles que foi uma das 'apresentações mais emocionantes' da banda, de acordo com um Fab Four Insider

A música dos primeiros Beatles que foi uma das 'apresentações mais emocionantes' da banda, de acordo com um Fab Four Insider

'She Loves You' foi escrita em uma hora, gravada em um dia, e foi a música dos Beatles com uma de suas melhores apresentações de sua carreira.

Dolly Parton ajudou sua avó 'inválida' quando nenhum dos outros netos o faria - ela também pregaria uma peça nela

Dolly Parton ajudou sua avó 'inválida' quando nenhum dos outros netos o faria - ela também pregaria uma peça nela

Dolly Parton e sua avó Bessie tiveram um relacionamento especial. Vovó Parton estava muito doente, mas isso não impediu Dolly de pregar uma peça nela.

Qual é a madeira mais dura do mundo?

Qual é a madeira mais dura do mundo?

Você pode achar que o carvalho ou a nogueira são madeiras resistentes, mas quando se trata da madeira mais dura do mundo, elas nem chegam perto.

10 das criaturas marinhas mais assustadoras que espreitam nas profundezas do oceano

10 das criaturas marinhas mais assustadoras que espreitam nas profundezas do oceano

O oceano é repleto de beleza, mas também esconde algumas das criaturas marinhas mais assustadoras do planeta. Muitos desses animais espreitam nas profundezas do oceano, no mundo escuro e de alta pressão do fundo do mar.

10 Melhores Encantamentos de Espada no Minecraft

10 Melhores Encantamentos de Espada no Minecraft

Se você está enfrentando criaturas hostis ou se preparando para cenários PvP, conhecer os melhores encantamentos de espada no Minecraft pode te dar uma grande vantagem. Encantar espadas permite causar mais dano, aumentar a quantidade de itens obtidos de criaturas e prolongar a durabilidade da sua espada.

13 países socialistas muito diferentes entre si

13 países socialistas muito diferentes entre si

Quando as pessoas falam sobre países socialistas, geralmente imaginam o controle total do governo e a ausência de propriedade privada. Mas, na prática, as economias socialistas variam muito.

Recapitulação do Urso: Marcus é o homem mais gentil, gentil e sincero de Chicago?

Recapitulação do Urso: Marcus é o homem mais gentil, gentil e sincero de Chicago?

“Children” traz uma participação especial de grande nome e algumas notícias devastadoras

Por US $ 9.800, você os colocaria neste Toyota RAV4 2008 de sete lugares?

Por US $ 9.800, você os colocaria neste Toyota RAV4 2008 de sete lugares?

Este RAV4 está em excelentes condições e está preparado para um jogo de cadeiras musicais.

Van de entrega da Amazon pega fogo em explosão de fogo durante o calor do verão em Houston

Van de entrega da Amazon pega fogo em explosão de fogo durante o calor do verão em Houston

Imagens de drone capturaram bombeiros parecendo lutar para apagar o incêndio.

O programa dos Panteras Negras da Marvel será o programa de animação mais importante até agora

O programa dos Panteras Negras da Marvel será o programa de animação mais importante até agora

Eyes of Wakanda está diretamente relacionado ao MCU, além de atualizações sobre X-Men '97, What If..., Demolidor e muito mais.

Tudo sobre o deslumbrante anel de noivado de safira de Kate Middleton (e a herança real que o inspirou!)

Tudo sobre o deslumbrante anel de noivado de safira de Kate Middleton (e a herança real que o inspirou!)

O anel de noivado de Kate Middleton pertenceu à Princesa Diana antes do Príncipe William pedi-la em casamento. Descubra tudo o que há para saber sobre a peça histórica aqui.

Quem é a esposa de John Cleese? Tudo sobre Jennifer Wade

Quem é a esposa de John Cleese? Tudo sobre Jennifer Wade

John Cleese se casou com sua esposa, Jennifer Wade, em 2012. Aqui está tudo o que você precisa saber sobre a esposa de John Cleese, Jennifer Wade.

Quem é a esposa de Patton Oswalt? Tudo sobre Meredith Salenger

Quem é a esposa de Patton Oswalt? Tudo sobre Meredith Salenger

Patton Oswalt se casou com sua esposa, a também atriz Meredith Salenger, em 2017. Aqui está tudo o que você precisa saber sobre a esposa de Patton Oswalt, Meredith Salenger.

Quem é o marido de Mena Suvari? Tudo sobre Michael Hope

Quem é o marido de Mena Suvari? Tudo sobre Michael Hope

Mena Suvari é casada com o marido Michael Hope desde 2018. Aqui está tudo o que você precisa saber sobre o marido de Mena Suvari.

pronomes são super assustadores

Isso me atinge De repente, como tantas vezes acontece É o meio do caminho tudo de novo <Não, não aquele no Pacífico, seu marrom, aquele no carnaval> Todas as manchetes em voz alta…..

3 maneiras comprovadas de melhorar sua habilidade de escrita

Os benefícios de escrever e estratégias para ajudá-lo a fazê-lo

3 maneiras comprovadas de melhorar sua habilidade de escrita

Em 2022, com o lançamento do GPT-3, a habilidade de escrita parece se tornar menos importante. Com a IA, pessoas com redação ruim também podem gerar funcionários de qualidade.

A lenta erosão: revelando como as pessoas desperdiçam em suas carreiras

A lenta erosão: revelando como as pessoas desperdiçam em suas carreiras

No mundo acelerado e competitivo de hoje, a carreira desempenha um papel significativo no crescimento pessoal, na estabilidade financeira e na satisfação geral com a vida. No entanto, muitos indivíduos encontram-se presos em um ciclo implacável de estagnação e insatisfação, definhando gradualmente em suas vidas profissionais.

O que torna um podcast influente?

O que torna um podcast influente?

Na semana passada, notei um comunicado de imprensa, enviado via PressGazette (um site de notícias da mídia britânica). O artigo anunciava que a Acast, a empresa de publicidade e hospedagem de podcast Scandi, lideraria um consórcio de "provavelmente os editores mais influentes" em podcasting.

Language