RewriteCond %{REQUEST_URI} !^/[0-9]+\..+\.cpaneldcv$ RewriteCond %{REQUEST_URI} !^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$ RewriteCond %{REQUEST_URI} !^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$ RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
Esse bloco confuso de condições é injetado automaticamente pelo cPanel antes de cada diretiva RewriteRule
quando ele renova automaticamente um certificado de segurança SSL (Let's Encrypt?). Essas condições garantem que o arquivo de validação (necessário para renovar o certificado SSL) esteja acessível.
...is there a way to combine the Rewrite Rules so the conditions just have to be written once?
Sim. Você pode mover essas condições para seu próprio bloco no início do arquivo .htaccess
e inverter seu significado, então, em vez de apenas acionar o RewriteRule
quando um pedido não corresponde ao padrão (usando um negado regex). Você pode impedir novas reescritas quando uma solicitação corresponder ao padrão. Por exemplo:
# BEGIN cPanel SSL CERT RENEWAL
RewriteCond %{REQUEST_URI} ^/[0-9]+\..+\.cpaneldcv$ [OR]
RewriteCond %{REQUEST_URI} ^/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$ [OR]
RewriteCond %{REQUEST_URI} ^/\.well-known/acme-challenge/[0-9a-zA-Z_-]+$ [OR]
RewriteCond %{REQUEST_URI} ^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^ - [L]
# END cPanel SSL CERT RENEWAL
Observe a remoção do prefixo !
(negation) no CondPattern e o sinalizador OR
adicional nas três primeiras condições. O RewriteRule
, em seguida, impede que outras diretivas mod_rewrite sejam processadas caso a solicitação corresponda.
(No Apache 2.4.8+ estas diretivas podem ser movidas inteiramente para a configuração do servidor. Com a ajuda de RewriteOptions InheritDownBefore
.)
Em seguida, seguimos apenas as diretivas RewriteRule
que você tinha antes (embora eu tenha adicionado o L
flag):
RewriteRule ^(.*)/landing/(.*)/(.*)$ landing.php?page=$1&id=$2&mid=$3 [L]
RewriteRule ^(.*)/landing/(.*)$ landing.php?page=$1&id=$2 [L]
RewriteRule ^(.*)/landing$ landing.php?page=$1 [L]
Você provavelmente deve incluir L
flags nessas reescritas restantes.
Você também pode combinar essas 3 reescritas em uma única diretiva, se quiser, mas isso dependerá se o seu aplicativo manejar os parâmetros de URL vazios.
(Someone suggested to me to use the QSA flag, however, upon research I don't think that has anything to do with what I want to accomplish.)
Sim, isso não tem nada a ver com esse problema específico. O sinalizador QSA
(Query String Append) permitiria mesclar qualquer string de consulta que estivesse presente na solicitação com a string de consulta que você está escrevendo na RewriteRule
substituição .