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重定向进入重定向循环_Apache_.htaccess_Redirect_Modx - Fatal编程技术网

Apache htaccess重定向进入重定向循环

Apache htaccess重定向进入重定向循环,apache,.htaccess,redirect,modx,Apache,.htaccess,Redirect,Modx,我已经使用modx创建了一个后端,它位于具有以下url的服务器上: 站点的实时版本有一个指向/en/目录的域。 因此,要正确访问,我必须访问: 但是modx仍然在所有内容中添加文件夹“companyname”。然后指向一个不存在的页面 在.htaccess中执行以下操作时,页面进入重定向循环并出现错误 RewriteEngine On RewriteBase /de/pages/ RewriteCond %{HTTP_HOST} . RewriteCond %{HTTP_HOST} !^d

我已经使用modx创建了一个后端,它位于具有以下url的服务器上:

站点的实时版本有一个指向/en/目录的域。 因此,要正确访问,我必须访问:

但是modx仍然在所有内容中添加文件夹“companyname”。然后指向一个不存在的页面

在.htaccess中执行以下操作时,页面进入重定向循环并出现错误

RewriteEngine On
RewriteBase /de/pages/
RewriteCond %{HTTP_HOST} .

RewriteCond %{HTTP_HOST} !^domain\.com/company-name/en/pages/ [NC]
RewriteRule (.*) http://www\.domain\.ch/en/pages/$1 [R=301,L]

我如何才能使其正确工作?因此,目录“company name”永远不会是url的一部分?

您的
%{HTTP\u HOST}
永远不会像
domain\.com/company name/en/pages/
,因为主机字段不包含路径信息,只包含主机名。所以你想要:

RewriteCond %{HTTP_HOST} !^(www\.)?domain\.com$ [NC]
RewriteRule ^company-name/(.*)$ http://www.domain.com/en/pages/$1 [L,R=301]

您需要将htaccess文件和这些规则放在
www.server.com
站点的文档根目录中。

Jon Lin的回答完成了任务,但是在源代码处解决问题不是比重写通过服务器发出的每个请求更好吗?如果没有关于文件夹和域结构的更多信息,就很难进行故障排除,但是您可以从站点url设置开始(在系统设置或
core/config/config.inc.php