【问题标题】:SSL and remove extension .html via HTACCESS without redirect chainsSSL 并通过 HTACCESS 删除扩展名 .html,无需重定向链
【发布时间】:2014-12-07 14:09:57
【问题描述】:

我发现所有这些用于删除 .html 扩展名的脚本似乎都无法通过 SSL 运行。我用新脚本解决了这个问题,但现在我正在创建一个两步重定向链,出于 SEO 的原因我不喜欢它 - 在你的帮助下:) 我希望让它回到重定向步骤/跳跃。

我的脚本是

RewriteBase /


RewriteEngine On 
RewriteCond %{SERVER_PORT} 80 
RewriteRule ^(.*)$ https://www.carpro.ro/$1 [R=301,L]

# Force WWW prefix
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} ^([^.]+)\.([a-z]{2,4})$ [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]


# Remove .html extension
RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.html
RewriteRule (.*)\.html$ /$1 [L,R=301]


RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]

但它似乎创建了一连串的重定向。

有没有更好的版本

  1. 网站所有页面的 301 http 到 https
  2. 将非 WWW 重定向到 WWW
  3. 删除 .html 扩展名并且不要留下尾随 /

上面的脚本可以工作,但我不喜欢重定向级联

http://www.domain.com/something.html 执行 301 重定向 https://www.domain.com/something.html 然后又是 301 重定向 https://www.domain.com/something

而不是 http://www.domain.com/something.html 单个重定向到 https://www.domain.com/something

关于优化这个有什么想法吗?

【问题讨论】:

    标签: .htaccess redirect ssl


    【解决方案1】:

    试试这个代码:

    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{SERVER_PORT} 80 
    RewriteRule ^ https://www.carpro.ro%{REQUEST_URI} [NE,R=302,L]
    
    # Force WWW prefix
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteCond %{HTTPS}s ^on(s)|
    RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [NE,R=302,L]
    
    # Remove .html extension
    RewriteCond %{THE_REQUEST} ^GET\ /[^?\s]+\.html
    RewriteRule (.+?)\.html$ /$1 [L,R=302,NC]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([^.]+?)/?$ $1.html [NC,L]
    

    【讨论】:

    • 这有助于感谢@anubhava。您可以删除 SERVER_PORT 80 部分,因为最好在 apache 可用站点中使用“永久重定向”进行 http 到 https 重定向...
    【解决方案2】:

    您可以尝试以下重写规则以消除 html 扩展名

    重写规则 ^(.*).html$ /$1 [R=301,L]

    以及以下用于尾随/删除的重写规则

    重写规则 ^(.*)/$ /$1 [R=301,L]

    希望对你有帮助

    【讨论】:

    • 在这种情况下,两个步骤仍然存在。非 http,重定向到 https,它重定向到没有 html 扩展名的路径。我正在寻找的是 ***http://www.domain.com/something.html 单个重定向到 ***https://www.domain.com/something
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-22
    • 1970-01-01
    • 2017-04-30
    • 1970-01-01
    相关资源
    最近更新 更多