道歉,如果这对某些人来说似乎很简单。
在过去,我已经使用遍布互联网的代码片段设置了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
答案 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了解详细信息。