0

例如,需要将发送到子域 auto.domain.int 的请求重定向到 www.domain.int/doc/sample-rates。这是一个 Zend 应用程序,因此使用了 MVC。我的 .htaccess conf 中有以下内容:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^auto\.domain\.int$
RewriteRule ^.*$ /doc/sample-rates [PT,L]

问题是,当我在文件系统上放置一个真实文件的名称作为 RewriteRule 替换时,可以说是“script.php”,一切正常。在 auto.domain.int 主机名下提供的 script.php 文件的内容。

另一方面,当我将 MVC 路由作为 RewriteRule 替换时,我从 apache 收到 500 错误,用于 '/doc/sample-rates' 路径和 400 错误,用于 ' http://www.domain.int/doc/sample-rates ' 路径和 apache 日志中的几行:

127.0.0.1 - - [04/Mar/2013:10:50:19 --0500] [auto.domain.int/sid#b73cd9d8][rid#b6d75058/initial] (3) [perdir /var/www/domain /base/www.domain.com/htdocs/] 去除每个目录前缀:/var/www/domain/base/www.domain.com/htdocs/ ->
127.0.0.1 - - [04/Mar/2013:10:50:19 --0500] [auto.domain.int/sid#b73cd9d8][rid#b6d75058/initial] (3) [perdir /var/www/domain /base/www.domain.com/htdocs/] 将模式 '^.*$' 应用于 uri ''
127.0.0.1 - - [04/Mar/2013:10:50:19 --0500] [auto.domain.int/sid#b73cd9d8][rid#b6d75058/initial] (2) [perdir /var/www/domain /base/www.domain.com/htdocs/] 重写 '' -> '/doc/sample-rates'
127.0.0.1 - - [04/Mar/2013:10:50:19 --0500] [auto.domain.int/sid#b73cd9d8][rid#b6d75058/initial] (2) [perdir /var/www/domain /base/www.domain.com/htdocs/] 强制“/do​​c/sample-rates”传递到下一个 API URI-to-filename 处理程序
127.0.0.1 - - [04/Mar/2013:10:50:19 --0500] [auto.domain.int/sid#b73cd9d8][rid#b6d75058/initial] (1) [perdir /var/www/domain /base/www.domain.com/htdocs/] 内部重定向与 /doc/sample-rates [内部重定向]
127.0.0.1 - - [04/Mar/2013:10:50:19 --0500] [auto.domain.int/sid#b73cd9d8][rid#b6d67018/initial/redir#1] (3) [perdir /var /www/domain/base/www.domain.com/htdocs/] 添加路径信息后缀:/var/www/domain/base/www.domain.com/htdocs/doc -> /var/www/domain/base/ www.domain.com/htdocs/doc/sample-rates
127.0.0.1 - - [04/Mar/2013:10:50:19 --0500] [auto.domain.int/sid#b73cd9d8][rid#b6d67018/initial/redir#1] (3) [perdir /var /www/domain/base/www.domain.com/htdocs/] 去除每个目录前缀:/var/www/domain/base/www.domain.com/htdocs/doc/sample-rates -> doc/sample-费率
127.0.0.1 - - [04/Mar/2013:10:50:19 --0500] [auto.domain.int/sid#b73cd9d8][rid#b6d67018/initial/redir#1] (3) [perdir /var /www/domain/base/www.domain.com/htdocs/] 将模式 '^.*$' 应用于 uri 'doc/sample-rates'
127.0.0.1 - - [04/Mar/2013:10:50:19 --0500] [auto.domain.int/sid#b73cd9d8][rid#b6d67018/initial/redir#1] (2) [perdir /var /www/domain/base/www.domain.com/htdocs/] 重写 'doc/sample-rates' -> '/doc/sample-rates'
127.0.0.1 - - [04/Mar/2013:10:50:19 --0500] [auto.domain.int/sid#b73cd9d8][rid#b6d67018/initial/redir#1] (2) [perdir /var /www/domain/base/www.domain.com/htdocs/] 强制“/do​​c/sample-rates”传递到下一个 API URI-to-filename 处理程序
127.0.0.1 - - [04/Mar/2013:10:50:19 --0500] [auto.domain.int/sid#b73cd9d8][rid#b6d67018/initial/redir#1] (1) [perdir /var /www/domain/base/www.domain.com/htdocs/] 内部重定向与 /doc/sample-rates [内部重定向]


更新:auto.domain.int 是使用 ServerAlias 的“主”www.domain.int 的别名。



谢谢,
尤金

4

1 回答 1

1

您必须添加一个附加项RewriteCond以防止无休止的重写

RewriteCond %{HTTP_HOST} ^auto\.domain\.int$
RewriteCond %{REQUEST_URI} !^/doc/sample-rates$
RewriteRule ^.*$ /doc/sample-rates [PT,L]
于 2013-03-04T16:58:49.223 回答