Reescreva não trabalhando no arquivo .htaccess

1

Atualização em 26/06/18: Compreendo que isso pode ser uma duplicação de Redirecionar, alterar URLs ou Redirecionar HTTP para HTTPS no Apache - tudo o que você sempre quis saber sobre as regras do Mod_Rewrite, mas tinha medo de perguntar no entanto, eu mencionei no meu post original que eu estava naquele post e encontrei o site testador desse post. Li esse post e, embora ainda seja um novato para reescrever regras, não acho que isso seja duplicado; no entanto, posso estar errado.

Estou tentando configurar uma nova regra de reescrita no meu arquivo .htaccess (abaixo)

    SetEnv HTTPS on

<IfModule mod_rewrite.c>
    RewriteEngine On
Options -Indexes
    # Send would-be 404 requests to Craft
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !^/(favicon\.ico|apple-touch-icon.*\.png)$ [NC]
    RewriteRule (.+) index.php?p=$1 [QSA]
Options - Autodiscover
   RewriteEngine On
   RewriteCond %{REQUEST_FILENAME} -s [OR]
   RewriteCond %{REQUEST_FILENAME} -l [OR]
   RewriteCond %{REQUEST_FILENAME} -d
   RewriteRule ^.*$ - [NC,L]
   RewriteRule ^.*$ autodiscover.php [NC,L]
</IfModule>

Encontrei este testador on-line neste post: Redirecionar, Alterar URLs ou Redirecionar HTTP para HTTPS no Apache - Tudo o que você sempre quis saber sobre as regras do Mod_Rewrite, mas teve medo de perguntar

Link para o testador: testador .htaccess

Quando eu executei minha configuração, recebi a seguinte saída informações de depuração para .htaccess

Minha pergunta:

  1. Como posso ter certeza de que o index.php não está sendo roteado de forma errada com base na saída da ' informação de depuração para .htaccess '? Na saída das 'informações de depuração para .htaccess', o index.php está sendo anexado ao autodiscover.xml - o que NÃO é o que preciso acontecer.
  2. O que há de errado com minha configuração que faz com que ela falhe em relação à parte de Descoberta Automática? A ' informação de depuração para .htaccess ' afirma que a condição foi atendida apenas por causa do 'OR' na minha configuração.

Obrigado a qualquer um que veja isso e ofereça qualquer tipo de assistência ou explicação !! : -)

    
por Michael Purvis 22.06.2018 / 01:05

1 resposta

1

A última regra não tem condições, por isso é usada sempre.

RewriteRule ^.*$ autodiscover.php [NC,L]

The RewriteCond directive defines a rule condition. One or more RewriteCond can precede a RewriteRule directive. The following rule is then only used if both the current state of the URI matches its pattern, and if these conditions are met.

Portanto, todas as suas condições estão relacionadas à regra anterior:

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

Além disso:

  • Você só precisa de RewriteEngine On uma vez.

  • Options - Autodiscover teria um erro de sintaxe SE havia tal recurso de servidor.

por 22.06.2018 / 16:04