如何合并 .htaccess 规则

How to combine .htaccess rules

提问人:selinav 提问时间:11/16/2023 最后编辑:Stephen Ostermillerselinav 更新时间:11/16/2023 访问量:12

问:

我在共享托管方面遇到了一个问题,无法结合规则说:.htaccess

  • (在子目录中)的路径index.php
  • 将 www 重定向到不使用 www

共享主机有一个目录public_html,而我在 public_html/web 上 我在根目录上添加了:index.php.htaccess

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^example.com$ [NC,OR] 
RewriteCond %{HTTP_HOST} ^www.example.com$ 
RewriteCond %{REQUEST_URI} !web/ RewriteRule (.*) /web/$1 [l]

它很好用,但是如何在没有www的情况下将www重定向的信息添加到?

RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC] 
RewriteRule ^ http%{ENV:protossl}://%1%{REQUEST_URI} [L,R=301]

我们已经测试了许多语法,如下所示,但它重定向重定向到并且 URL 在我的 CMS 中很糟糕。我们在之前或之后测试重定向目录 /web,它是一样的。https://www.example.comhttps://example.com/web

RewriteEngine On
#Redirect from www to without -www
RewriteCond %{HTTP_HOST} ^www.example.com$ [NC]
  
RewriteRule ^(.*)$ https://example.com/$1 [R=301,L]
#Redirect to directory /web
RewriteCond %{REQUEST_URI} !^/web/

RewriteRule (.*) /web/$1 [L]

我已经尝试了许多与托管商的语法,但我找不到解决方案

RewriteEngine on
#Redirect to subdirectory /web
  
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ NC
  
RewriteCond %{REQUEST_URI} !^/web/ 
RewriteRule ^(.*)$ /web/$1 L 
#Redirection from www to without www
  
RewriteCond %{HTTP_HOST} ^www.example.com$ NC 
RewriteRule ^(.*)$ https://example.com/$1  R=301,L
.htaccess域名

评论

1赞 CBroe 11/16/2023
HTTP -> HTTPS 重定向需要首先发生。您已经使用了状态代码 301,因此您的浏览器可能缓存了错误的重定向 - 清除缓存,或在私人窗口中进行测试。只要您仍在测试,就可以将其更改为 302。

答: 暂无答案