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



我有一个.htaccess,它有多个规则,3有一个Magento商店的硬编码URL:

1)要从URL中删除端口号,站点在带有Apache的Docker容器中运行,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安装中运行多个存储,这样多个域名就可以链接到这个安装。此.htaccess由于硬编码的URL而发生冲突。我试着让这些变得通用,但最终却出现了500个错误。如何使这3条规则通用?

找到了!经过多次尝试,并用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]

最新更新