【发布时间】:2013-03-05 06:55:15
【问题描述】:
我在我的 .htaccess 文件中使用以下代码重定向应用程序,该页面应该执行以下操作:
- 将 .php 扩展名替换为 .html
- 从 http 重定向到 https
- 从 www 重定向到非 www 网址
扩展 .html 工作正常,它从 http 重定向到 https,但问题是从 www 重定向到非 www,它在主 url 上正常工作,但是当引用文件时,它不是工作。
说,当我写 www.ntestechnologies.com 时,我得到了我想要的 URL,即 https://ntestechnologies.com,但是当我写 www.ntestechnologies.com/index.html 时,我得到了这个 https://www.ntestechnologies.com/index.html,我不需要这个 www url也请指导我,这是htaccess文件上的代码:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.ntestechnologies\.com$
RewriteRule ^/?$ "https\:\/\/ntestechnologies\.com\/$1" [R=301,L]
RewriteRule ^(.*)\.html$ $1.php [nc]
【问题讨论】:
-
如果你想重写所有 www. url,为什么不写 RewriteRule (.*) 而不是 RewriteRule ^/?$ ?您甚至没有在替换 URL 中使用反向引用 ($1),因为您没有捕获任何结果。
-
我还建议您在 HTTPS 检查中添加以下条件(或完全替换它),因为我发现 %{HTTPS} 变量不稳定。 RewriteCond %{SERVER_PORT} !^443$ [OR]。 OR 标志表示如果任一条件为真(不使用 https),则进行重写
-
代码是复制粘贴的,我不是.htacess和apache的专家,能不能详细解释一下。