Apache 重写条件A或(!B和!C)
我可以在Apache服务器上的Apache 重写条件A或(!B和!C),apache,.htaccess,mod-rewrite,Apache,.htaccess,Mod Rewrite,我可以在Apache服务器上的.htaccess文件中使用mod\u rewrite。我想要这样的东西: RewriteEngine On RewriteCond %{HTTPS} !on [NC,OR] RewriteCond %{HTTP_HOST} !^example\.com RewriteCond %{HTTP_HOST} !^sub\.example\.com RewriteRule ^/?(.*)$ https://example.com/$1 意思是“如果http或请求除su
.htaccess
文件中使用mod\u rewrite
。我想要这样的东西:
RewriteEngine On
RewriteCond %{HTTPS} !on [NC,OR]
RewriteCond %{HTTP_HOST} !^example\.com
RewriteCond %{HTTP_HOST} !^sub\.example\.com
RewriteRule ^/?(.*)$ https://example.com/$1
意思是“如果http
或请求除sub.
(例如www.
)以外的子域,则重定向到https
,不带www.
”
-->什么也不做https://example.com
-->http://example.com
https://example.com
-->https://www.example.com
https://example.com
-->http://www.example.com
https://example.com
-->什么也不做https://sub.example.com
-->http://sub.example.com
,这绝对不适用于上述代码https://sub.example.com
最简单的方法是什么?提前谢谢李>
RewriteEngine On
# remove www and https for https://www.example.com or http://www.example.com
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=302]
# simply add https for rest
RewriteCond %{HTTPS} !on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,NE,R=302]
- 确保清除浏览器缓存或使用新浏览器进行测试
- 测试后将
更改为302
301
www.
,你可以在示例中看到,http://www.example.com
应重定向到https://example.com
,但您正在以另一种方式进行。。。R=301需要注意的一点是:只有在完成所有工作后才能使用它,改变它并不容易。GTG,试着用谷歌搜索一下……好吧,所以需要打破两条规则。我建议编辑,这将删除所有子域,而不仅仅是www。看看它。我已经批准了你的编辑。第二条规则,即http->https
适用于所有域。我知道第二条规则适用于所有域。但是您将第一个文件编辑回仅删除www.
。(建议的是“如果除sub.
之外有子域,请将其删除。)虽然这不是我在问题中要求的行为,但可能更好。谢谢你破译我糟糕的英语:)