将非WWW重定向到WWW URL

Ull*_*kar 8 php apache .htaccess redirect

当人们访问我的域时,它会使用php代码重定向到http://www.mydomain.com/en/index.php.我 在.htaccess中添加了以下代码

RewriteEngine on
Options +FollowSymlinks

RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
RedirectPermanent /pages/abc-123.html http://www.mydomain.com/en/page-a1/abc.php
Run Code Online (Sandbox Code Playgroud)

将人们从非www重定向到www,

不过用户可以通过键入这两个访问http://mydomain.com/en/page-a1/abc.phphttp://www.mydomain.com/en/page-a1/abc.php 网址

有没有人知道完全重定向到http://www.mydomain.com/en/page-a1/abc.php的方法, 即使用户键入http://www.mydomain.com/en/page-a1/abc. PHP,并禁止访问没有www的URL.

gen*_*sis 13

$protocol = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://";

if (substr($_SERVER['HTTP_HOST'], 0, 4) !== 'www.') {
    header('Location: '.$protocol.'www.'.$_SERVER['HTTP_HOST'].'/'.$_SERVER['REQUEST_URI']);
    exit;
}
Run Code Online (Sandbox Code Playgroud)

在PHP中

  • `strncmp($ _ SERVER ['HTTP_HOST'],'www.',4)=== 0`;) (3认同)
  • 斜杠不是必需的"/".它会在重定向上产生不必要的额外斜杠.`$ _ SERVER [ 'HTTP_HOST'.$ _ SERVER [ 'REQUEST_URI']` (3认同)

小智 5

<?php
$protocol = (@$_SERVER["HTTPS"] == "on") ? "https://" : "http://";
if (substr($_SERVER['HTTP_HOST'], 0, 4) !== 'www.') {
    header('Location: '.$protocol.'www.'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
    exit;
}
?>
Run Code Online (Sandbox Code Playgroud)

好好工作


Kok*_*kos 4

我不知道如何通过 .htaccess 来完成此操作,但我自己在 my 中使用 PHP 代码来完成此操作,config.php该代码为每个文件加载。

if(substr($_SERVER['SERVER_NAME'],0,4) != "www." && $_SERVER['SERVER_NAME'] != 'localhost')
    header('Location: http://www.'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']);
Run Code Online (Sandbox Code Playgroud)

编辑: @genesis,你是对的,我忘记了 https

改变

header('Location: http://www.'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']);
Run Code Online (Sandbox Code Playgroud)

header('Location: '.
       (@$_SERVER['HTTPS'] == 'on' ? 'https://' : 'http://').
       'www.'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']);
Run Code Online (Sandbox Code Playgroud)