【发布时间】:2015-10-12 19:51:11
【问题描述】:
我想用我的 .htaccess 完成以下事情:
- 非 www 到 www
- http 到 https 页面
/my/smaple/page除外 - 如果文件名不是文件或目录,则执行 index.php
现在是这样的:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} !^/my/sample/page
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
如果我尝试访问http://www.mydomain.tld/my/smaple/page,我会被重定向到https://www.mydomain.tld/index.php。其他一切都有效。我的 .htaccess 知识很低,所以请解释一下出了什么问题。
【问题讨论】:
-
请求
/my/sample/page是否会映射到文件或目录? -
@Jon Li:
/my/sample/page只是一个在 php 运行时从框架创建的路由,所以它绝对不存在。我在这个页面上使用了一些外部资源(主要是图像),这就是我想使用 http 而不是 https 的原因。而且我不认为最后一条规则会导致这个问题,因为它只是到 index.php 的内部重定向。
标签: .htaccess mod-rewrite redirect