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 に答える