1

我想重定向

http://en.example.org
http://de.example.org

http://example.org/en
http://example.org/de

但不喜欢:

<VirtualHost *:80>
 DocumentRoot "C:/Apache2.2/htdocs/example/public"
 ServerName example.org
</VirtualHost>

<VirtualHost *:80>
 DocumentRoot "C:/Apache2.2/htdocs/example/public/en"
 ServerName en.example.org
</VirtualHost>

<VirtualHost *:80>
 DocumentRoot "C:/Apache2.2/htdocs/example/public/de"
 ServerName de.example.org
</VirtualHost>

因为没有这样的文件夹“C:/Apache2.2/htdocs/example/public/en”或“C:/Apache2.2/htdocs/example/public/de”

我也不能使用:

<VirtualHost *:80>
 DocumentRoot "C:/Apache2.2/htdocs/example/public"
 ServerName example.org
 ServerAlias en.example.org de.example.org
</VirtualHost>

因为我需要在 zend 框架中重用 'en'、'de'。

任何想法?

4

1 回答 1

1

我不确定 zend 对请求做了什么。我假设您的文档根目录中有一个 htaccess 文件,其中包含一些 zend 内容,如果是这样,您需要在它们之前添加它。

重定向浏览器,使其 URL 地址栏显示http://example.org/en

RewriteEngine On
RewriteCond %{HTTP_HOST} ^en\.example\.org$ [NC]
RewriteRule ^/?(.*)$ http://example.org/en/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^de\.example\.org$ [NC]
RewriteRule ^/?(.*)$ http://example.org/de/$1 [L,R=301]

如果您只想在内部重写 URI,请尝试:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^en\.example\.org$ [NC]
RewriteCond %{REQUEST_URI} !^/en/ 
RewriteRule ^/?(.*)$ /en/$1 [L]
RewriteCond %{HTTP_HOST} ^de\.example\.org$ [NC]
RewriteCond %{REQUEST_URI} !^/de/
RewriteRule ^/?(.*)$ /de/$1 [L]
于 2012-09-16T17:12:56.653 回答