.htaccess中不同协议的URL重写

Ale*_*lex 8 apache .htaccess mod-rewrite apache2 url-rewriting

我需要帮助在.htaccess中进行网址重写.

所以问题在于不同的协议:https和http.重写的主要目的是从URL中删除"www",但协议应该保持原样.

例如,当我有喜欢的网址HTTP://www.domain.com/request,它应该被重定向到HTTP://domain.com/request.我用这些规则解决它:

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

但是,如果URL看起来像https://www.domain.com/request,则应将其重定向到https://domain.com/request.

不幸的是,无论当前协议如何,上述规则都将重定向到http.

提前致谢.

Tim*_*one 9

这与链接的可能副本非常相似,但由于那个强制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]
Run Code Online (Sandbox Code Playgroud)

  • 对于那些寻找www到非www重定向的人来说,对上述规则的解释肯定会非常有用. (2认同)