VirtualHost/.htaccess-从 .com 重定向到 .se/en 不起作用/被忽略(Polylang?)

VirtualHost/.htaccess-从 .com 重定向到 .se/en 不起作用/被忽略(Polylang?)

我尝试重定向domain.comdomain.se/en,但就是不行。就好像又一次重写或重定向发生在domain.se/sv 在我有机会之前。我尝试了多个 VirtualHosts 配置和.htaccess变体,但都没有成功。domain.com使用指向与(主域)相同 IP 的 A 记录domain.se。我怀疑 WordPress 插件聚郎可能会在我有机会之前重写 URL 或导致重定向。

我的.htacces当前样子是这样的:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} .*domain.com.*$
RewriteRule ^(.*)$ http://domain.se/en [L]
</IfModule>
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

我的 VirtualHosts 配置如下所示:(请注意,.no.fi也错误地重定向到.se/sv)

NameVirtualHost *:80
<VirtualHost *:80>
        ServerName domain.com
        ServerAlias www.domain.com
        RedirectPermanent / http://domain.se/en
</VirtualHost>

<VirtualHost *:80>
        ServerName domain.fi
        ServerAlias www.domain.fi
        RedirectPermanent / http://domain.se/fi
</VirtualHost>

<VirtualHost *:80>
        ServerAdmin [email protected]
        ServerName domain.se
        ServerAlias www.domain.se
        ServerAlias domain.no
        DocumentRoot /var/www/html
        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        <Directory /var/www/html>
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>
</VirtualHost>

当我尝试访问时,它在 Chrome Dev 工具的网络部分中如下所示domain.com

Chrome 开发工具 - 网络标签 - 显示重定向

在访问该域之前,我已在本地和 Chrome 中刷新了 DNS 缓存。

答案1

我遇到了同样的问题。WordPress 似乎是此标头的罪魁祸首。我不知道您的项目结构,因此我建议使用以下两种方法来解决问题:

Header always edit Location在您的 VirtualHost 配置中,需要mod_headers。这将始终编辑标题应用程序所做的任何修改,例如 Zend、WordPress、Spring 等。

wp_redirect, 从回答,应该有助于您排除故障,而无需触及服务器配置。这可能是不是这是对您的问题的优雅解决方案,但这是您可以用来调试应用程序的功能。

相关内容