我正在尝试将domain.comredirect到domain.se/en ,但它不起作用。 这就像另一个重写或redirect发生在domain.se/sv 之前,我有机会 。 我试过多个VirtualHostsconfiguration和.htaccess变种没有成功。 domain.com使用指向与domain.se (主域)相同的IP的Alogging。 我怀疑WordPress插件Polylang可能会重写URL或导致redirect,然后我有机会。
我的.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
和我的VirtualHostsconfiguration看起来像这样:(注意.no和.fi也错误地redirect到.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>
当我尝试访问domain.com时,这就是Chrome开发工具networking部分的样子:
在访问域之前,我在本地和Chrome中刷新了DNScaching。
我有同样的问题。 WordPress似乎是这个头上的罪魁祸首。 我不知道你的项目结构,所以我会build议两种方法来解决这个问题:
Header always edit Location在您的VirtualHostconfiguration中Header always edit Location ,需要mod_headers 。 这将始终编辑应用程序,即Zend,WordPress,春季等任何修改后的头。
wp_redirect ,从答案 ,应该帮助您的故障排除,而不接触服务器configuration。 这可能不是您的问题的优雅的解决scheme,但这是一个可以用来debugging应用程序的function。