.htaccess 规范的https和www

.htaccess 规范的https和www,.htaccess,mod-rewrite,redirect,https,http-status-code-301,.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)正确的术语吗

如果这对某些人来说很简单,我会道歉

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

Options +FollowSymlinks
RewriteEngine on
rewritecond %{http_host} ^domain.com [nc]
rewriterule ^(.*)$ http://www.domain.com/$1 [r=301,nc]
然而,有几件事让我对这个特殊的项目感到不确定

1) 我使用的是https,所以现在有四个CName(这是(CName)正确的术语吗?)

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

问题: 1) 我将重定向放置在int he.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
#仅在启用mod rewrite时才启用URL重写
重新启动发动机
#安装目录
重写基/
#保护应用程序和系统文件不被查看
重写规则^(应用程序|模块|系统|测试| sql)-[F,L]
#允许直接显示现有的任何文件或目录
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
#将所有其他URL重写为index.php/URL
重写规则。*index.php?kohana_uri=$0[L,QSA]
#保护htaccess不被查看
命令允许,拒绝
全盘否定
#不显示映射到目录的URL的目录列表。
选项-索引
#跟随符号链接
选项+FollowSymlinks

将所有请求重定向到
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
的情况下进行测试,请参阅此答案了解详细信息。

也许这会有所帮助。您希望实现什么?HTTPS会发生什么或不会发生什么?@Olaf我希望访问者能够访问一个域名,不管他们使用的是4个变体中的哪一个:谢谢Olaf这很有帮助。只有一个问题-这会被视为301重定向吗?我的理解是,这很重要。@DougFirr请查看更新的答案。好的,谢谢。我很高兴在使用301s时注意到浏览器的攻击性缓存。考虑到这一点,我尝试了你的代码,但似乎有一个问题:如果你访问https://example.com,它不会重定向。所有其他变体都会重定向到example.com。从搜索引擎优化的角度来看,example.com与https://example.com有什么不同吗?再次感谢你的帮助。如果有帮助,可以在这里看到该站点:@DougFirr我刚刚在我的测试环境中尝试了这个,它重定向了所有三个
http://www.example.com
https://www.example.com
https://example.com
http://example.com
。日志文件中是否有任何错误消息或其他内容?我相信您已看到您报告的内容!不过,我似乎仍然对其中一个问题感到困扰:似乎没有重定向到example.com?