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
.htaccess 结合htaccess重定向和重写(非www到www、http到https、带关键字的目录到根目录)_.htaccess_Redirect - Fatal编程技术网

.htaccess 结合htaccess重定向和重写(非www到www、http到https、带关键字的目录到根目录)

.htaccess 结合htaccess重定向和重写(非www到www、http到https、带关键字的目录到根目录),.htaccess,redirect,.htaccess,Redirect,我(有时)以某种方式成功地管理了.htaccess文件,但在这方面需要帮助 我想同时做到以下几点 将非www的内容重定向到www 将带有/site或/site/的任何内容重定向到root 将http重定向到https 最后,每个链接,不管它是如何产生的,都应该以/original\u request\u directory\u或\u file\u(如果有的话)开始和结束 我可以得到1,没问题 RewriteEngine on RewriteCond %{HTTP_HOST} ^domain.co

我(有时)以某种方式成功地管理了.htaccess文件,但在这方面需要帮助

我想同时做到以下几点

  • 将非www的内容重定向到www
  • 将带有/site或/site/的任何内容重定向到root
  • 将http重定向到https
  • 最后,每个链接,不管它是如何产生的,都应该以/original\u request\u directory\u或\u file\u(如果有的话)开始和结束

    我可以得到1,没问题

    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^domain.com$
    RewriteRule ^/?$ "http\:\/\/www\.domain\.com\/" [R=301,L]
    
    我可以得到#2没有问题,它与#1一起工作

    到目前为止,我无法实现的是#3

    当我启用上述代码时,我得到了重定向循环错误的浏览器错误

    期待一个解决方案(因为我确信这是可能的,但我不知道如何解决。)


    提前谢谢大家

    如果您将所有内容重定向到https,请避免在重定向到http之前进行重定向

    RewriteEngine on
    RewriteRule ^site/? https://www.domain.com/ [R=302,L]
    
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} ^domain.com$
    RewriteRule ^ https://www.domain.com%{REQUEST_URI} [R=302,L]
    

    当一切正常时,将[R=302,L]更改为[R=301,L]。不幸的是,这导致了“重定向循环”错误(Chrome的通知)
    RewriteCond %{HTTPS} off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L]
    
    RewriteEngine on
    RewriteRule ^site/? https://www.domain.com/ [R=302,L]
    
    RewriteCond %{HTTPS} off [OR]
    RewriteCond %{HTTP_HOST} ^domain.com$
    RewriteRule ^ https://www.domain.com%{REQUEST_URI} [R=302,L]