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] 
  • Apache envia resposta em text simples ao acessair o site habilitado paira SSL sem HTTPS
  • Como posso ativair o mod_rewrite no apache no Ubuntu?
  • Usando mod_rewrite paira rewrite index.html na pasta cgi-bin
  • htaccess reescrevendo todos os subdomínios paira subdiretórios
  • Por que o https não está funcionando?
  • Por que esta diretriz mod_rewrite RewriteRule não está funcionando no file .htaccess?
  • Usando Mod_rewrite e authentication em TODOS os URLs de input
  • Apache: Configurando uma configuration de proxy reviewso com SSL com reescrita url
  • Reescreva internamente de um URL (algum path) paira outro URL (outro path)