Codeigniter перенаправить не www на www - PullRequest
4 голосов
/ 05 октября 2011

я видел .htaccess Перенаправить non-WWW в WWW сохраняющую строку URI , но это не работает для меня

, если я захожу на mysite.com / site / что-то я перенаправлен на mysite.com / что-то

RewriteCond %{HTTP_HOST} !^www\.mysite\.com$
RewriteRule (.*) http://www.mysite.com/$1 [R=301,L]

также пытался:

RewriteCond %{HTTP_HOST} .
RewriteCond %{HTTP_HOST} !^www.mysite.com [NC]
RewriteRule (.*) http://www.mysite.com/$1 [R=301,L]

редактировать:

вот код, который я использую, на основе ответа Альфонсо Рубальцавы:

if (substr($_SERVER['SERVER_NAME'], 0, 3) != 'www')
{

    if ($_SERVER['REQUEST_URI'] == '//site/')
    {
        header('HTTP/1.1 301 Moved Permanently');
        header('Location: http://www.site.com/site/');
        exit;
    }

    header('HTTP/1.1 301 Moved Permanently');
    header('Location: http://www.site.com' . $_SERVER['REQUEST_URI']);
    exit;

}

Ответы [ 5 ]

6 голосов
/ 05 октября 2011

Попробуйте, в index.php, в начале:

if(substr($_SERVER['SERVER_NAME'],0,3)=="www"){
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: http://yourdomain.tdl/".$_SERVER['REQUEST_URI']);
}else{
    //the current contents of your file
}

РЕДАКТИРОВАТЬ Я неправильно прочитал ваш вопрос, ответ:

if(substr($_SERVER['SERVER_NAME'],0,3)!="www"){
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: http://www.yourdomain.tdl/".$_SERVER['REQUEST_URI']);
}else{
    //the current contents of your file
}
2 голосов
/ 26 июля 2016

включите эти две строки в файл .htaccess codeigniter, чтобы перенаправить URL, не являющийся www, на www

RewriteCond %{HTTP_HOST} !^www\.(.*)
RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L]

, т.е. полный файл .htaccess будет выглядеть примерно так->

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteCond %{HTTP_HOST} !^www\.(.*)
 RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
0 голосов
/ 05 мая 2019

Вы можете использовать код ниже на всех сайтах codeigniter.

`

<IfModule mod_rewrite.c>
RewriteEngine On
 RewriteCond %{HTTP_HOST} !^www\.(.*)
 RewriteRule (.*) http://www.%{HTTP_HOST}/$1 [R=301,L]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

`

0 голосов
/ 04 апреля 2019

Я знаю, у проблемы уже есть принятое решение.Но есть проблема, если домен имеет также несколько поддоменов.Если ваш codeigniter также обрабатывает субдомены, субдомены также будут перенаправлены на www.

Вот ответ в этом случае.Допустим, ваш домен www.thedomain.com, код должен быть:

$sna = explode(".", $_SERVER['SERVER_NAME']);
if($sna[0]=="thedomain"){
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: http://www.thedomain.com/".$_SERVER['REQUEST_URI']);
}
0 голосов
/ 19 августа 2017

Используйте этот код

#Redirect to www
RewriteEngine On
RewriteCond %{HTTP_HOST} ^[^.]+\.[^.]+$
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...