Canonical https和www

时间:2013-04-13 00:50:08

标签: .htaccess mod-rewrite redirect https http-status-code-301

道歉,如果这对某些人来说似乎很简单。

在过去,我已经使用遍布互联网的代码片段设置了301重定向:

Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^domain.com [nc]
rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc]

但是,有些事情让我对这个特定的项目不确定。

1)我正在使用https,所以现在有四个CName(那是(CName)正确的术语吗?) https://example.com https://www.example.com http://example.com http://www.example.com

2)我正在使用需要.htaccess文件的CMS,以便在运行网站时搜索CSS和其他信息。因此,作为一个技术含量较低的人,我担心摆弄.htaccess文件(当此文件丢失以前死于单独的问题时,该网站无法正常运行)

问题: 1)在.htaccess文件中我放置重定向的位置是否重要?文件的开头/结尾? 2)我如何更改上面的代码片段以考虑https?

这是.htaccess代码

# Turn on URL rewriting only when mod rewrite is turn on

<IfModule mod_rewrite.c>
    RewriteEngine On

    # Installation directory
    RewriteBase /

    # Protect application and system files from being viewed
    RewriteRule ^(application|modules|system|tests|sql) - [F,L]

    # Allow any files or directories that exist to be displayed directly
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    # Rewrite all other URLs to index.php/URL
    RewriteRule .* index.php?kohana_uri=$0 [L,QSA]
</IfModule>

# Protect the htaccess from being viewed
<Files .htaccess>
    order allow,deny
    deny from all
</Files>

# Don't show directory listings for URLs which map to a directory.
Options -Indexes

#Follow symlinks
Options +FollowSymlinks

1 个答案:

答案 0 :(得分:1)

要将所有请求重定向到http://example.com,您可以在规则前加上

RewriteCond %{HTTP_HOST} ^www\.example\.com$ [OR]
RewriteCond %{HTTPS} =on
RewriteRule ^.*$ http://example.com/$0 [R,L]

这会重定向所有请求,这些请求包含HTTPS或www.example.com或两者。

如果一切正常,您可以将R更改为R=301

永远不要在启用301的情况下进行测试,请参阅此回答Tips for debugging .htaccess rewrite rules了解详细信息。