1

我在我的 .htaccess 文件中使用以下代码重定向应用程序,该页面应该执行以下操作:

  1. 用 .html 替换 .php 扩展名
  2. 从http重定向到https
  3. 从 www 重定向到非 www url

扩展名 .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 请指导我,这是 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]
4

2 回答 2

1

你只需要一个RewriteEngine On

您不能HTTP_HOSTREQUEST_URI. RewriteRule如果您需要捕获这些值,则必须在RewriteCond

RewriteCond %{HTTPS} off
RewriteCond %{HTTP_HOST} ^(?:www\.)(.+)
RewriteRule .* https://%1/$0 [R,L]

RewriteCond %{HTTP_HOST} ^www\.(.+)
RewriteRule .* https://%1/$0 [R,L]

这将删除前导www(如果存在)。同时,它重定向到 HTTPS。

于 2013-03-05T09:50:48.577 回答
0
RewriteEngine On

# Redirects from HTTP to HTTPS. We use %{SERVER_PORT} as it's more reliable than %{HTTPS}
RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R,L]

# Redirects www.example.com/... to example.com/...
RewriteCond %{HTTP_HOST} ^www\.(.+)
RewriteRule .* https://%1%{REQUEST_URI} [R,L]

RewriteRule ^(.*)\.html$ $1.php [nc]
于 2013-03-05T12:13:11.783 回答