我在提交此帖子之前搜索了stackoverflow,但我没有运气:-S
我的网站上有一个复杂的.htaccess文件,如下所示:
这部分用于重定向(X.2nate dot com - > 2nate dot com / api / x),它运行良好
########### API Redirection Section ##########
RewriteEngine On
# Extract the subdomain part of domain.com
RewriteCond %{HTTP_HOST} ^([^\.]+)\.2nate\.com$ [NC]
# Check that the subdomain part is not www and ftp and mail
RewriteCond %1 !^(www|ftp|mail|charge)$ [NC]
# Redirect all requests to the original url /blog
RewriteRule ^.*$ https://2nate.com/api/%1 [L]
此部分用于将非SSL请求重定向到SSL协议:
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
这部分用于将WWW重定向到无WWW地址:
RewriteCond %{HTTP_HOST} ^www\.2nate\.com$
RewriteRule ^/?$ "http\:\/\/2nate\.com\/" [R=301,L]
问题是:
当我试图访问“充电”时,点mywebsite dot com(充电是我主机中真正的子域)我无法访问相关页面并且它正在重定向到主页面!
我认为问题在于这一部分:
RewriteCond %{HTTP_HOST} ^www\.2nate\.com$
RewriteRule ^/?$ "http\:\/\/2nate\.com\/" [R=301,L]
因为当我删除这部分时,一切正常(除了重定向到非WWW)。
感谢任何帮助。
答案 0 :(得分:0)
问题实际上是这条规则:
RewriteRule ^.*$ https://2nate.com/api/%1 [L]
由于您在目标网址中使用http://
,因此不会进行无提示重写,但会成为外部重定向。
让你的.htaccess像这样:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]
RewriteCond %{HTTP_HOST} ^www\.2nate\.com$
RewriteRule ^ http://2nate.com%{REQUEST_URI} [R=301,L,NE]
# Extract the subdomain part of domain.com
RewriteCond %{HTTP_HOST} ^((?!www)[^.]+)\.2nate\.com$ [NC]
# Check that the subdomain part is not www and ftp and mail
RewriteCond %1 !^(www|ftp|mail|charge)$ [NC]
# Redirect all requests to the original url /blog
RewriteRule ^.*$ /api/%1 [L]