从htaccess重写规则中删除硬编码的URL

3
我有一个包含多个规则的 .htaccess 文件,其中 3 个是为 Magento 商店硬编码的 URL: 1) 为了从 URL 中删除端口号,该网站在 Docker 容器中运行,Apache 在容器中运行,而 Nginx 在主机上运行以将流量转发到正确的容器。由于某种原因,:80 被添加到 URL 中,此规则将其删除:
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://domain.nl/$1 [L,R=301]

2) 从URL中删除index.php

RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ https://domain.nl/$1 [R=301,L]

3) 重定向/home/

redirect 301 /home https://domain.nl

现在我想在这个Magento安装中运行多个商店,因此多个域名链接到此安装。由于硬编码的URL,此.htaccess冲突。我尝试使它们通用,但最终遇到500错误。如何将这3个规则通用化?
1个回答

1
我找到了!在多次尝试和使用curl检查头信息后,我弄明白了。但这仍然是一个有点奇怪的配置,因为Nginx将主机上的所有内容重定向到Docker容器中的Apache。

1)

RewriteCond %{SERVER_PORT} 80
RewriteCond %{HTTP_HOST} ^([^:]+)(:[0-9]+)?$
RewriteRule ^(.*)$ https://%1/$1 [L,R=301]

2)

RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ https://%{HTTP_HOST}/$1 [R=301,L]

3)

RewriteRule ^home/?$ https://%{HTTP_HOST}/ [nc,R=301,L]

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接