Certamente não há necessidade de várias diretivas RewriteRule
. Isso só complicaria as coisas e seria menos eficiente. Se você tiver várias regras (para cada condição), cada regra será processada, pelo menos, mesmo se você já estivesse no protocolo canônico + host.
No entanto, parece que você está redirecionando todos os outros domínios. Tudo que é não www.maindomain.com
. Se este for o caso, você pode simplificar esta regra e acabar com as várias 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
redireciona para HTTPS e www.maindomain.com
. Em vez de verificar especificamente cada host não canônico, você está apenas verificando se não é o host canônico.
Não é necessário usar as âncoras inicial e final se você estiver capturando todo o caminho da URL. ie. (.*)
é o mesmo que ^(.*)$
.
Ou, você poderia evitar a regex capturando e apenas usar a variável REQUEST_URI
server (que começa notavelmente com uma barra). 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 se parece com o carbuncle que o cPanel (automaticamente) injeta antes de cada RewriteRule
ao renovar certificados SSL. Se você tiver muitas diretivas RewriteRule
em .htaccess
, isso resultará em um arquivo .htaccess
incrivelmente inchado. (Ele também pode expor vulnerabilidades que não eram evidentes anteriormente.) Eu não sei por que elas não separam essas condições em um único bloco no início do arquivo e negam (ou invertem) elas 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]