【问题标题】:Can't redirect using 301 and .htacces无法使用 301 和 .htaccess 重定向
【发布时间】:2018-06-01 13:06:48
【问题描述】:

我刚刚开始学习 CSS 和 HTML。

我从 HostGator 购买了一个域名来上传我的小网站。

我使用 Cyber​​Duck 上传我所有的东西。

然后我发现了一个名为 .htacces 的东西,我在 WWW 文件夹中没有它,我尝试“制作”一个。

然后我使用 Nibbler 测试了该网站,它一直说“有重复的内容”,我应该这样做:“选择一个您想要使用的域,然后设置一个永久 (HTTP 301) 重定向以转发用户谁拜访了对方。”

我发现了很多重写和重定向,但我无法使它们中的任何一个起作用。

我需要写什么才能没有“重复”网站(或解决规范网站地址(我认为这就是它的名称))???

假设我的网站名称是:http://www.FirstSite.net,我希望所有“FirstSite”搜索都转到 https://FirstSite.net 或 FirstSite.net,但仍然是 https。

我用 s 写了 https,因为我想让网站安全(如果可能的话)。

我一直在修改 gator 的 cPanel 中的 .htacces,我正在使用 Google Chrome。

感谢您阅读这份手稿!

这就是我复制粘贴的全部内容(我忘记了那些没有 # 的人是做什么的(最后两段)):

# MAIN DEFAULTS
Options +ExecCGI -Indexes
DirectoryIndex index.html
DefaultLanguage en-US
AddDefaultCharset UTF-8
ServerSignature Off

# compress text, HTML, JavaScript, CSS, and XML
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
# remove browser bugs
BrowserMatch ^Mozilla/4 gzip-only-text/html
BrowserMatch ^Mozilla/4\.0[678] no-gzip
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
Header append Vary User-Agent



#HTACCES Security
<Files ~ “^.*\.([Hh][Tt][Aa])”>
order allow,deny
deny from all
satisfy all
</Files>


# 1 WEEK 1 DAY
<filesMatch “.(jpg|jpeg|png|gif|swf|ico)$”>
Header set Cache-Control “max-age=691200, public”
</filesMatch>
# 1 WEEK 1 DAY
<filesMatch “.(xml|txt|js)$”>
Header set Cache-Control “max-age=691200, proxy-revalidate”
</filesMatch>
# 1 WEEK 1 DAY
<filesMatch “.(html|htm|css|php)$”>
Header set Cache-Control “max-age=691200, private, proxy-revalidate”
</filesMatch>

Options +SymLinksIfOwnerMatch 
RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.html [L]
</IfModule>

【问题讨论】:

  • 1. .htaccess 之类的点文件是隐藏文件。确保隐藏文件在 cPanel 中可见。 2. 安装SSL证书才能使用HTTPS。
  • 那么其他重定向呢?
  • 转到您的域的文档根目录,并找到应该已经存在的 .htaccess 文件。在该文件中进行更改。重定向将起作用。
  • 你不能先将 http 重定向到 httpsyou need to get the certificate。获得证书后,您可以将服务器上的 DNS 更改为重定向到 https

标签: html css .htaccess redirect url-redirection


【解决方案1】:

要确保您的网站安全,您必须拥有有效的 SSL 证书。这不仅仅是将shttp 放在一起

如果您的域中已经安装了一个。您可以使用下面的代码为您的域地址强制 SSL(重定向)。

RewriteCond %{HTTP_HOST} firstsite\.net [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.firstsite.net/$1 [R,L]

要解决规范或重复网站问题,请使用

# Fix the non-www to www canonicalization issue:
RewriteCond %{HTTP_HOST}^example.com [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

# Fix the canonical issue vecause of index files
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . http://www.firstsite.net%1/%2 [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /(([^/]+/)*)index\.html\ HTTP/
RewriteRule index\.html$ http://www.firstsite.net/%1 [R=301,L]\

根据您的服务器设置,将firstsite.net 更改为您的域名以及索引文件的名称和扩展名。

如果使用 ngnix 服务器将 www 重定向到非 www

使用 nginx 重定向从 url 中去除 www

server {
    listen       80;
    server_name  www.example.com;
    return       301 http://example.org$request_uri;
}

server {
    listen       80;
    server_name  example.com;
    ...
    #The rest of your configuration goes here#
}

所以你需要有两个服务器代码。

【讨论】:

  • 那么其他重定向呢?
  • 嗨@GeorgeFlorian 你问什么样的重定向。你需要什么重定向?
  • 修复了 Nibbler 指出的问题;有重复的内容,几乎有 2 个不同的网站。
  • 嗨@GeorgeFlorian 我已经更新了上面的答案。请看一看。
  • georgeflorian.org
猜你喜欢
  • 2015-03-20
  • 1970-01-01
  • 2018-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-08
  • 2011-05-01
  • 2011-01-03
相关资源
最近更新 更多