代码之家  ›  专栏  ›  技术社区  ›  Alex

.htaccess中不同协议的URL重写

  •  8
  • Alex  · 技术社区  · 15 年前

    我需要帮助在.htaccess中重写url。

    所以问题是关于不同的协议:https和http。重写的主要目的是从URL中删除“www”,但是协议应该和以前一样。

    ://www.domain.com/request,应该重定向到 http协议 ://domain.com/请求. 我用以下规则来解决:

    RewriteBase /
    RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
    

    但万一URL看起来像 https协议 ://www.domain.com/request它应该重定向到 ://domain.com/请求.

    不幸的是,上述规则将重定向到

    提前谢谢。

    1 回复  |  直到 15 年前
        1
  •  9
  •   Tim Stone    15 年前

    这与链接的可能的副本非常相似,但因为 www 如果你想删除它,可能需要一个单独的答案。

    尝试以下操作:

    RewriteCond %{HTTP_HOST} ^www\.
    RewriteCond %{HTTPS}s ^on(s)|off
    RewriteCond http%1://%{HTTP_HOST} ^(https?://)(www\.)?(.+)$
    RewriteRule ^ %1%3%{REQUEST_URI} [R=301,L]