我尝试重定向domain.com
到domain.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 中刷新了 DNS 缓存。
答案1
我遇到了同样的问题。WordPress 似乎是此标头的罪魁祸首。我不知道您的项目结构,因此我建议使用以下两种方法来解决问题:
Header always edit Location
在您的 VirtualHost 配置中,需要mod_headers
。这将始终编辑标题后应用程序所做的任何修改,例如 Zend、WordPress、Spring 等。
wp_redirect
, 从回答,应该有助于您排除故障,而无需触及服务器配置。这可能是不是这是对您的问题的优雅解决方案,但这是您可以用来调试应用程序的功能。