自定义域不会在 Azure 应用服务上保留 Apache 重定向的路径

Custom domain won't retain path with Apache redirect on Azure App Service

提问人:csaba 提问时间:10/16/2023 最后编辑:csaba 更新时间:10/23/2023 访问量:57

问:

我的 .htaccess 在本地测试时、部署到 azure 应用服务时以及从 customdomain.com/foo/content/bar 尝试时都能完美运行。--> newdomain.com,如果我使用 azure 的应用服务域名,它不会保留路径,该域名通常是: something-some-prod.azurewebsites.com 上述内容再次完美地与接管的路径一起工作。

.htaccess,示例:

RewriteRule "^/?foo/foo/content/bar/content2/?$" "https://www.newdomain.com/foo/foo/" [L,R=301,NE]
  • 上述内容在旧域上不存在,我想保留 foo/foo 部分,这就是我强制使用这个的原因。

我的另一条规则,在最后:

RewriteRule "^/?(.*)" "https://www.newdomain.com/$1" [L,R=301,NE]

不知道发生了什么,有人吗?

更新: 这是我在新域名主机上拥有的,.htaccess

    RewriteEngine On

# Handle URL Canonicalization 
RewriteCond %{HTTP_HOST} ^old-domain.com$ [NC]
RewriteRule ^(.*)$ https://www.old-domain.com/$1 [L,R=301]

RewriteCond %{HTTP_HOST} ^new-domain.com$ [NC]
RewriteRule ^(.*)$ https://www.new-domain.com/$1 [L,R=301]


# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]

# Handle Front Controller...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
Azure Apache .htaccess 重定向

评论

0赞 CBroe 10/16/2023
“我的另一条规则,在最后”——所以你是说,你通过它重定向的内容在所有情况下都按预期工作——只有你试图通过另一条规则处理的一个特定案例,不是吗?
0赞 csaba 10/16/2023
@CBroe不,两者都行不通。无论路径如何,我得到的都是重定向到 newdomain.com。虽然如果我这样做: olddomain.com/?foobar --> newdomain.com/?foobar ,查询就会被接管。
0赞 CBroe 10/16/2023
如果这些规则中的任何一个适用,那么我看不出这不应该按预期工作。如果他们没有 - 那么问题将是,首先是什么将您重定向到新域......?也许重定向正在发生 - 但出于某种原因,newdomain 本身随后重定向到其根目录?
0赞 csaba 10/19/2023
@CBroe 当然,它有效,但不是预期的。我用newdomain .htaccess文件更新了它。我认为应该删除旧域的第一个 URL 规范化规则,我认为这不会解决我的问题,但这里已经没有必要了。
0赞 CBroe 10/19/2023
如果你没有旧域名和新域名指向同一网站空间上的同一文件夹,那么一开始就把它放在那里是没有意义的 - 一个请求从一开始就永远不会到达这个。(如果你确实让它们都指向那里,那么将用户从 发送到 first 然后再将他们重定向到 仍然意义不大。old-domain.comold-domain.comwww.old-domain.comwww.new-domain.com

答:

0赞 csaba 10/23/2023 #1

旧域上的 SSL 证书已过期。