Я не могу добавлять www в домен с htaccess

Я использую laravel, и я переслал проект в сервер и я могу соглашаться на домен так из-за miDominio.com как www.miDominio.com. и я хочу, чтобы всегда добавил www.

htaccess это у меня есть следующего способа...

<IfModule mod_rewrite.c>    
  RewriteEngine On
  RewriteCond %{REQUEST_URI} !^/public/.*$    
  RewriteRule ^(.*)$ /public/$1 [QSA,L]
  RewriteCond %{HTTP_HOST} !^www\. [NC]
  RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>

Я протестировал тысячу кодов htaccess и я не могу пересылать автоматически в www.

1
задан 03.02.2017, 19:21
2 ответа

Регулярные выражения правильны и они были бы выполнены, но твои условия избегают того, чтобы осуществилось перенаправление.

  1. RewriteCond %{REQUEST_URI} !^/public/.*$ - Ты проверяешь, в попросившей URI появляется ли маршрут /public/,
  2. RewriteRule ^(.*)$ /public/$1 [QSA,L] - Если выполняется условие, примени правило, сейчас наблюдай флаги, которые ты размещаешь в конце этого условия:

    • [QSA] значь добавлять, условие присоединяется существующим.
    • [L] значь last, или последнее правило на английском. Применив это правило, файл .htaccess прекрати быть обработанным.
  3. Уже у него нет случая, который проверял бы следующее условие, потому что уже он нашел флаг L что останавливает все.

  4. С другой стороны, перенаправление всегда останавливает обработку следующих правил, потому что в строгом чувстве example.com и www.example.com это два различных домена.

Решение

Удали отметку L твоего первого правила.

<IfModule mod_rewrite.c>    
  RewriteEngine On
  RewriteCond %{REQUEST_URI} !^/public/.*$    
  RewriteRule ^(.*)$ /public/$1 [QSA]
  RewriteCond %{HTTP_HOST} !^www\. [NC]
  RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>

Ты можешь консультировать все выборы правил передикции в официальной документации.

1
ответ дан 24.11.2019, 14:05
  • 1
    Большое спасибо из-за твоего объяснения, я сделал то, что ты сказал, и останься так, что www не добавляет. Я попытался с этим правилом сейчас и также не добавляй, не, если это будет чем-то ubuntu или nose... RewriteCond % {HTTP_HOST} ^dominio.com.ar [NC] RewriteRule ^ (. *) $ dominio.com.ar / 1 $ [R=301, L] – Juan Pablo 22.06.2016, 23:57
  • 2
    #191; Ты возобновляешь сервер httpd despu и # 233; s каждого изменения? Помни, что он необходим. – toledano 23.06.2016, 04:54

Он пробует вторую линию, которая должна менять ее на RewriteBase

<IfModule mod_rewrite.c>    
     RewriteEngine On
     RewriteBase %{REQUEST_URI} !^/public/.*$    
     RewriteRule ^(.*)$ /public/$1 [QSA,L]
     RewriteCond %{HTTP_HOST} !^www\. [NC]
     RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
</IfModule>
0
ответ дан 24.11.2019, 14:05