我想重定向
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'。
有什么想法吗?
答案 0 :(得分:1)
我不确定这些请求会有什么用处。我假设你的文档根目录中有一个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]