Uma regra de reescrita ou múltiplas em htaccess

Eu tenho um domínio principal, um pair de domínios addon e recentemente fui HTTPS. Isso está funcionando bem paira mim, mas eu gostairia da sua opinião:

## All http requests to the relative https url RewriteCond %{SERVER_PORT} 80 [OR] ## redirect the other domains and the non www main main domain RewriteCond %{HTTP_HOST} ^domain3.com [OR] RewriteCond %{HTTP_HOST} ^www.domain3.com [OR] RewriteCond %{HTTP_HOST} ^domain2.com [OR] RewriteCond %{HTTP_HOST} ^www.domain2.com [OR] RewriteCond %{HTTP_HOST} ^maindomain.com ## this stuff is for SSL RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$ RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$ ## i send them all to the https main domain RewriteRule ^(.*)$ https://www.maindomain.com/$1 [L,R=301] 

Esta é uma abordagem melhor paira ter uma regra de reescrita paira cada condição?

One Solution collect form web for “Uma regra de reescrita ou múltiplas em htaccess”

Certamente, não há necessidade de múltiplas diretivas RewriteRule . Isso só complicairia as coisas e seria less eficiente. Se você tiview várias regras (paira cada condição), cada regra seria pelo less processada, mesmo se você já estivesse no protocolo canônico + host.

No entanto, você pairece redirect todos os outros domínios. Tudo o que não é www.maindomain.com . Se for esse o caso, você pode simplificair esta regra e eliminair as múltiplas condições . Por exemplo:

 ## All http requests to the relative https url RewriteCond %{SERVER_PORT} 80 [OR] ## redirect all the other non-canonical domains RewriteCond %{HTTP_HOST} !^www\.maindomain\.com ## this stuff is for SSL RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$ RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$ ## i send them all to the https main domain RewriteRule (.*) https://www.maindomain.com/$1 [L,R=301] 

Então, isso agora diz … se HTTP ou não, www.maindomain.com , redirecione paira HTTPS e www.maindomain.com . Em vez de viewificair especificamente paira cada host não canônico, você está apenas viewificando que não é o host canônico.

Não há necessidade das âncoras de início e de término se você estiview capturando todo o path de URL de qualquer maneira. ie. (.*) é o mesmo que ^(.*)$ .

Ou, você poderia evitair a captura do regex e apenas use a vairiável do server REQUEST_URI vez disso (o que, notavelmente, começa com uma bairra). Por exemplo:

 RewriteRule ^ https://www.maindomain.com%{REQUEST_URI} [L,R=301] 
 ## this stuff is for SSL RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$ RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$ 

Isso pairece o cairbuncle que o cPanel (automaticamente) injeta antes de cada RewriteRule ao renovair SSL certs. Se você tem muitas diretivas RewriteRule em .htaccess isso faz com que um file .htaccess incrivelmente inchado. (Também pode expor vulnerabilidades que não eram evidentes anteriormente). Não sei por que eles não sepairam essas condições em um único bloco no início do file e negam (ou seja, inviewter) em vez disso? Por exemplo:

 # START: this stuff is for SSL RewriteCond %{REQUEST_URI} ^/[0-9]+\..+\.cpaneldcv$ [OR] RewriteCond %{REQUEST_URI} ^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$ RewriteRule ^ - [L] # END: this stuff is for SSL ## All http requests to the relative https url RewriteCond %{SERVER_PORT} 80 [OR] ## redirect all the other non-canonical domains RewriteCond %{HTTP_HOST} !^www\.maindomain\.com ## i send them all to the https main domain RewriteRule (.*) https://www.maindomain.com/$1 [L,R=301] 
  • Apache2 - mod_rewrite: RequestHeader e variables ​​de ambiente
  • Redirecionair, alterair URLs ou redirect HTTP paira HTTPS no Apache - Tudo o que você já quis saber sobre as regras do Mod_Rewrite, mas teve medo de perguntair
  • Como posso redirect qualquer ServiewAlias ​​paira o respectivo Nome do Servidor?
  • Apache httpd Redirecionamento de URL com base no Nome do Servidor
  • Reescreva a regra mudou o path base do aplicativo da Web
  • Apache + MOD_JK: Reescrevendo URLs + ProxyPassing thorugh AJP
  • Redirecionair, alterair URLs ou redirect HTTP paira HTTPS no Apache - Tudo o que você já quis saber sobre as regras do Mod_Rewrite, mas teve medo de perguntair
  • A reescrita do Apache 2.2 com Alias ​​só funciona no modo
  • Apache reescreva o erro da regra 403
  • Reescreva a regra quando a fonte contém um '?'
  • Protegendo imagens do access direto ao viewificair a session atual do PHP com mod_rewrite