我想重定向两种情况:
我目前在.htaccess
文件中使用以下内容:
RewriteEngine on
#RewriteCond %{HTTP_HOST} ^www\.egps\.org [NC]
#RewriteRule ^(.*)$ https://website.org/$1 [L,R=301]
RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^.*$ https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]
我注意到前两行因为它们引起了问题。在搜索Stackoverflow寻找答案时,我找到了以下接受的答案:
RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{HTTPS} !=on
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^(.*)$ https://www.%1%{REQUEST_URI} [L,R=301,NE]
有人可以解释我如何更改此代码以重定向到 NON www 而不是 www ?
任何人都可以将这些代码行实际上说的语言翻译成非常简单的语言吗?这是我到目前为止收集的......
HTTPS://www.
网址答案 0 :(得分:1)
我建议实施两个单独的重定向规则。这样做的好处是它只会导致所有情况下的单个重定向,并且更容易阅读/维护:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [NE,R=301]
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}{REQUEST_URI} [NE,R=301]
第一个条件提取主机名的一部分而没有前导www.
。
这些规则适用于http服务器主机配置,同样适用于动态配置文件(.htaccess
样式文件)。
一般提示:您应该始终更喜欢将此类规则放在http服务器主机配置中,而不是使用动态配置文件(“.htaccess”)。这些文件非常容易出错,难以调试,它们确实会降低服务器的速度。它们仅作为最后一个选项提供给您无法控制主机配置的情况(阅读:非常便宜的托管服务提供商),或者您有一个依赖于编写自己的重写规则的应用程序(这是一个明显的安全噩梦) )。