Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 如何使用htaccess(/en/to/)重定向URL的一部分_Apache_.htaccess_Mod Rewrite_Redirect_Typo3 - Fatal编程技术网

Apache 如何使用htaccess(/en/to/)重定向URL的一部分

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

我想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]
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匹配相结合),您认为解决方案如何?