例如,需要将发送到子域 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/] 强制“/doc/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/] 强制“/doc/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 的别名。
谢谢,
尤金