Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 使用.htaccess从www重定向到非www URL_Apache_.htaccess - Fatal编程技术网

Apache 使用.htaccess从www重定向到非www URL

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

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

  • 将.php扩展名替换为.html
  • 从http重定向到https
  • 从www重定向到非www URL
  • html扩展名工作正常,正在从http重定向到https,但问题是要从www重定向到非www,它在主url上工作正常,但当有文件引用时,它就不工作了

    比如说,当我写www.ntestechnologies.com时,我得到了我想要的url,但当我写www.ntestechnologies.com/index.html时,我得到了这个,我也不需要这个url中的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]
    

    您只需在上启动一个
    重写引擎

    您不能在
    重写规则
    中使用
    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]