URL规范化(.htaccess)

时间:2013-07-11 12:50:40

标签: php .htaccess url canonicalization

我想使用我的.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>

3 个答案:

答案 0 :(得分:0)


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

答案 1 :(得分: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并附加)。

答案 2 :(得分:0)

HTML 5 Boilerplate使用:

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

这将添加“www。”即使已有子域名。