Apache 如何使用htaccess(/en/to/)重定向URL的一部分
我想301重定向网站中的所有引用/en/,目前有多个网站在同一个TYPO3安装上运行。例如,所有引用都将保持相同的结构 例如,my-domain.com/en/将直接转到my-domain.com,my-domain.com/en/about-us将转到my-domain.com/about-us 因为有多个网站和域正在运行,我需要使用RewriteCond定义域。我试过下面的片段,但没有乐趣Apache 如何使用htaccess(/en/to/)重定向URL的一部分,apache,.htaccess,mod-rewrite,redirect,typo3,Apache,.htaccess,Mod Rewrite,Redirect,Typo3,我想301重定向网站中的所有引用/en/,目前有多个网站在同一个TYPO3安装上运行。例如,所有引用都将保持相同的结构 例如,my-domain.com/en/将直接转到my-domain.com,my-domain.com/en/about-us将转到my-domain.com/about-us 因为有多个网站和域正在运行,我需要使用RewriteCond定义域。我试过下面的片段,但没有乐趣 RewriteCond %{HTTP_HOST} ^my-domain.com$ [NC] Rewri
RewriteCond %{HTTP_HOST} ^my-domain.com$ [NC]
RewriteRule ^en/(.*)$ /$1 [R=301,L,NC]
实现这一点的正确方法是什么?这应该可以做到:
RewriteCond %{HTTP_HOST} ^www\.domain\.com$
RewriteRule ^en/(.*)$ /$1 [L,R=301]
除此之外,还可以像这样配置realurl prevars,以针对您的特定域:
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['www.domain.com'] = $GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['_DEFAULT'];
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['realurl']['www.domain.com']['preVars'] => array (
'0' => array (
'GETvar' => 'L',
'valueMap' => array (
//'en' => '0', // remove the language here
'de' => '2', // any other language...
),
'noMatch' => 'bypass' // thats the important bit
),
),
realurl配置的重要部分是防止默认语言通过noMatch=>bypass集成到url中,并将其从值数组中删除。是真正的目录吗?不存在/en/甚至不存在,但是我在查找添加了/en/的所有页面时遇到了很多404错误。我想将这些调用重定向到网站上的正常页面。如果此规则是您的第一条规则,那么您的规则应该有效。htaccess您不想再提供英文版本了吗?请记住,/en/part应该与RealURL一起添加,这可能是作为
?L=x
参数的替换。谢谢您的回答。虽然我认为这个设置的问题在于,在同一个TYPO3安装上运行的其他网站实际上有一个/en/版本。编辑realurl将对所有正在运行的网站禁用它,对吗?除非有一种方法可以像在.htaccess中一样在realurl中添加异常…我已经更新了答案,以在您的安装中针对特定的域。这将复制\u默认值
,并仅覆盖preVars
。@konsolenfreddy顺便问一下-对于复杂的多站点/多域站点安装(将_域与主机名上的preg\u匹配相结合),您认为解决方案如何?