1

我想使用我的 .htaccess 文件添加“www”。到所有 URL,如果没有它的请求,但我希望我可以做到这一点而不必定义域,因为我想在许多站点上使用此代码而无需编辑它。这可能吗?

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteBase /

    RewriteRule ^sitemap\.xml/?$ sitemap.php [L]

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule ^(.*)$ index.php?filename=$1 [L,QSA]
</IfModule>
4

3 回答 3

0

HTML 5 Boilerplate 使用这个:

RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

这将添加“www”。即使已经有一个子域。

于 2013-12-03T15:31:17.250 回答
0

抱歉,我无法具体回答您的问题。我的建议是使用您选择的服务器端代码来执行此操作。

在 php 中,你会做类似...

$host = !empty($_SERVER['HTTP_HOST']) ? $_SERVER['HTTP_HOST'] : $_SERVER['SERVER_NAME'];
$url = explode(".", $host);
if (count($url) == 2){
    //no subdomain found
    redirect("www.".$host);
}

更新:这将与 example.co.uk 之类的域名出现问题,不确定这是否是一个问题.....我仍在尝试支持您网站上的子域(因此不仅仅是检查 www 和附加) .

于 2013-07-11T13:47:11.580 回答
0

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
于 2013-07-11T12:58:39.517 回答