.htaccess não redireciona todas as solicitações para HTTPS

1

Eu tenho o seguinte conjunto como meu arquivo .htaccess para develop.metrolansing.com:

RewriteEngine On
Redirect 301 /forum https://develop.metrolansing.com/discussions
RedirectMatch ^/$ /discussions/
RewriteRule ^wp-content/uploads/2016/09/(.*)$ /ebay/$1 [R=301,NC,L]

RewriteBase /
RewriteCond %{HTTPS} !^on$
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,L]

Solicitações para o link são redirecionadas para o link e também os pedidos de link são redirecionados para o link (o site agora vive em / discussões).

No entanto, se eu visitar o link , a solicitação não será redirecionada para https.

Por que a última linha não está redirecionando a solicitação para o subdiretório corretamente?

    
por Jared 29.01.2017 / 21:44

1 resposta

0

Eu estou supondo que /discussions é um diretório físico que tem seu próprio arquivo .htaccess no qual você está usando o mod_rewrite (para lidar com o seu fórum )? As diretivas mod_rewrite não são herdadas por padrão, então as diretivas mod_rewrite no arquivo /discussions/.htaccess irão sobrescrever completamente as diretivas pai e o redirecionamento HTTP para HTTPS não acontecerá.

Você talvez possa ativar a herança mod_rewrite incluindo o seguinte na parte superior do arquivo .htaccess do subdiretório:

RewriteOptions inherit

No entanto, seria preferível incorporar as diretivas do arquivo .htaccess do subdiretório no arquivo pai .htaccess (fazendo quaisquer ajustes quando necessário).

Você também deve evitar misturar as diretivas de redirecionamento mod_alias ( Redirect e RedirectMatch ) com redirecionamentos mod_rewrite ( RewriteRule ). Módulos diferentes são processados em momentos diferentes durante a solicitação, portanto, o resultado pode ser confuso e você pode acabar com conflitos inesperados. O mod_rewrite geralmente é executado primeiro, apesar da ordem aparente em .htaccess .

    
por 29.01.2017 / 22:12

Tags