当人们访问我的域时,会将其重定向到 http://www.mydomain.com/en/index.php使用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
将人们从非www重定向到www ,
用户仍然可以通过键入http://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,也有人知道完全重定向到http://www.mydomain.com/en/page-a1/abc.php的方法,并禁止在没有www的情况下访问网址。
答案 0 :(得分:12)
$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;
}
在php中
答案 1 :(得分:4)
我不知道如何通过.htaccess来实现,但我自己在我的config.php
中为每个文件加载了PHP代码。
if(substr($_SERVER['SERVER_NAME'],0,4) != "www." && $_SERVER['SERVER_NAME'] != 'localhost')
header('Location: http://www.'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']);
编辑: @genesis,你说得对,我忘记了https
更改
header('Location: http://www.'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']);
到
header('Location: '.
(@$_SERVER['HTTPS'] == 'on' ? 'https://' : 'http://').
'www.'.$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']);
答案 2 :(得分:1)
在RewriteEngine On
之前添加RewriteCond
以启用重写规则:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
如果你有https:
RewriteEngine On
RewriteRule .? - [E=PROTO:http]
RewriteCond %{HTTPS} =on
RewriteRule .? - [E=PROTO:https]
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ %{ENV:PROTO}://www.%{HTTP_HOST}/$1 [R=301,L]
答案 3 :(得分:1)
<?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;
}
?>
正常工作
答案 4 :(得分:0)
Redirect 301 /pages/abc-123.html http://www.mydomain.com/en/page-a1/abc.php
<IfModule mod_rewrite.c>
Options +FollowSymlinks
RewriteEngine on
# mydomain.com -> www.mydomain.com
RewriteCond %{HTTP_HOST} ^mydomain.com
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L]
</IfModule>
答案 5 :(得分:0)
我认为你想重定向用户而不是重写URL,在这种情况下使用Redirect
或'RedirectMatch`指令。 http://httpd.apache.org/docs/2.3/rewrite/remapping.html#old-to-new-extern