Apache 使用.htaccess从www重定向到非www URL
我正在重定向.htaccess文件中包含以下代码的应用程序,该页面应执行以下操作:Apache 使用.htaccess从www重定向到非www URL,apache,.htaccess,Apache,.htaccess,我正在重定向.htaccess文件中包含以下代码的应用程序,该页面应执行以下操作: 将.php扩展名替换为.html 从http重定向到https 从www重定向到非www URL html扩展名工作正常,正在从http重定向到https,但问题是要从www重定向到非www,它在主url上工作正常,但当有文件引用时,它就不工作了 比如说,当我写www.ntestechnologies.com时,我得到了我想要的url,但当我写www.ntestechnologies.com/index.html
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]
您只需在上启动一个
重写引擎
您不能在重写规则
中使用HTTP\u HOST
或REQUEST\u URI
。如果需要捕获这些值,则必须在
这将删除前导的www
(如果存在)。同时,它会重定向到HTTPS。您只需要在
上安装一个重写引擎
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]
您不能在重写规则
中使用HTTP\u HOST
或REQUEST\u URI
。如果需要捕获这些值,则必须在
这将删除前导的www
(如果存在)。同时,它会重定向到HTTPS。如果要重写所有www.url,为什么不只写RewriteRule(.*)而不是RewriteRule^/?$?您甚至没有在替换URL中使用backreference($1),因为您没有捕获任何结果。我还建议您在HTTPS检查中添加以下条件(或完全替换),因为我看到%{HTTPS}变量不稳定。重写cond%{SERVER\u PORT}^443美元[或]。OR标志表示如果任一条件为真(不使用https),则执行重写。代码是复制和粘贴的,我不是.htacess和apache的专家。请详细解释。如果要重写所有www.url,为什么不只编写RewriteRule(.*)而不是RewriteRule^/?$?您甚至没有在替换URL中使用backreference($1),因为您没有捕获任何结果。我还建议您在HTTPS检查中添加以下条件(或完全替换),因为我看到%{HTTPS}变量不稳定。重写cond%{SERVER\u PORT}^443美元[或]。OR标志表示如果任一条件为真(不使用https)然后进行重写。代码是复制和粘贴的,我不是这方面的专家。htacess和apache您能详细解释一下吗。我第一次在任何浏览器上使用该脚本,但如果您第二次在同一浏览器上尝试,它只会直接指向https,但不会删除www。在这里,您可以将http->https和www-to->non-www。我怀疑这是他需要的。@MIrfan对我来说,它可以工作很多次。我忘了的是,当https已经启用时,我将介绍这个案例。我添加了所需的附加规则。我第一次在任何浏览器上使用该脚本,但如果您第二次在同一浏览器上尝试,它只会直接指向https,但不会删除www。在这里,您将http->https和www to->non-www这两个操作拼接在一起。我怀疑这是他需要的。@MIrfan对我来说,它可以工作很多次。我忘了的是,当https已经启用时,我将介绍这个案例。我添加了所需的附加规则。
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]