cod*_*ama 4 .htaccess redirect
我有以下一堆域名:
在htaccess中编写最短的方法是什么,以便创建所有域...
Tim*_*one 10
让我们看看这是否有效:
RewriteEngine On
# Check if the host name contains a . (localhost won't)
# Check if the host name starts with www
# Check if the host name ends with .com
# Check if the connection is secure
RewriteCond %{HTTP_HOST} \.
RewriteCond %{HTTP_HOST} !=svn.myDomain.com
RewriteCond %{HTTP_HOST} !^www [OR]
RewriteCond %{HTTP_HOST} !\.com$ [OR]
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://www.myDomain.com/$0 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
# If not on www., redirect to www. on SSL
RewriteCond %{REMOTE_ADDR} !127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}
RewriteCond %{HTTP_HOST} !^www
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
# If not on SSL(ish), redirect to SSL
RewriteCond %{SERVER_PORT} !^443$
RewriteCond %{REMOTE_ADDR} !127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
RewriteCond %{REMOTE_ADDR} !127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}
Run Code Online (Sandbox Code Playgroud)
通常,在访问本地托管的网站时,客户端的IP地址是127.0.0.1.时不时地,它是127.0.1.0.但整个127.x.x.x范围都是为本地保留的,所以我要检查所有这些,以防你有一个有趣的设置.
这比检查localhost或检查是否存在更安全.- 它还允许您编辑/etc/hosts文件以指向www.myDomain.com本地主机以进行更真实的测试.或者,如果你像我一样,你有一个域名,就像nathan.dev.mydomain.com或mydomain.com.dev.
RewriteCond %{HTTP_HOST} !^www\.
Run Code Online (Sandbox Code Playgroud)
如果域没有(!=不)以(^=开头)开头www....
RewriteCond %{SERVER_PORT} !^443$
Run Code Online (Sandbox Code Playgroud)
使用端口443是一种更安全的检查,因为在使用负载平衡服务器时无法保证HTTPS环境变量.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
这会迫使一切都使用"www".相当于该域名.例如mydomain.com成为www.mydomain.com; mydomain.de成为www.mydomain.de.
作为替代方案,可以使用下面的规则,迫使每一个域名重定向到www. 以及在.com:
RewriteRule ^(.*)$ https://www.myDomain.com/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
使用两个块,您可以更清楚地了解到底发生了什么.此外,如果要求允许使用任何TLD,则将其写为一个块将不起作用.如果使用上面的备用规则,您可以将它们组合成一个块.单块交替看起来像这样(注意添加[OR]):
RewriteCond %{REMOTE_ADDR} !127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}
RewriteCond %{HTTP_HOST} !^www [OR]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$ https://www.myDomain.com/$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)
值得注意的是,两个块的解决方案有时会导致两个重定向,但如果按照确切的顺序保留它,则会减少重定向.
示例:使用当前的规则顺序,如果客户端请求http://mydomain.com,则第一个块将应用(不www.存在)并将重定向到https://www.mydomain.com.但是,如果您翻转订单,那么服务器将首先检测到缺少SSL并且客户端将被重定向到https://mydomain.com,然后服务器将检测到缺少www.并提供额外的重定向https://www.mydomain.com.tl; dr:不要改变顺序.:)
快乐的黑客!
| 归档时间: |
|
| 查看次数: |
7848 次 |
| 最近记录: |