【发布时间】:2011-05-10 17:27:23
【问题描述】:
首先,我想删除 www。来自我的域名
http://www.example.com => http://example.com
我还希望某些目录是安全的 (https),而其余目录仍然是 http
http://example.com/login => https://example.com/login
显然它需要适用于所有条件,例如,如果有人输入:
http://www.example.com/login => https://example.com/login
此外,当人们离开登录页面时,它会返回 http。目前在 .htaccess 中有以下内容,由我正在使用的软件自动完成,我想它需要在那里才能工作:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* ./index.php
关于我如何实现梦想控制所有这些事情的任何想法?
提前致谢!
====================
@Gumbo 听从你的建议,这是我完整的 .htaccess
RewriteEngine On
# remove www from host
RewriteCond %{HTTP_HOST} ^www\.(.+)
RewriteCond %{HTTPS}s/%1 ^(on(s)|offs)/(.+)
RewriteRule ^ http%2://%3%{REQUEST_URI} [L,R=301]
# force HTTPS
RewriteCond %{HTTPS} =off
RewriteRule ^(login)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# force HTTP
RewriteCond %{HTTPS} =on
RewriteRule !^(login)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule .* ./index.php
Options -Indexes
导航到http://example/login 仍然会转到http://example/index.php,而它应该转到https://example/login 我的顺序有误吗?
【问题讨论】:
-
嗯,
^(login|foo|bar|…)$只是匹配login、foo、bar等的一个示例。 -
是的,我明白了,我只用 ^(login)$ 尝试过,但仍然表现出相同的行为
标签: .htaccess mod-rewrite ssl https no-www