htaccess子域重写保持www

时间:2012-08-10 11:25:24

标签: .htaccess mod-rewrite

我已在本地设置通配符域以便在.dev上进行测试

我正在尝试重写以下网址:

http://location.domain.dev/

http://www.domain.dev/site/location

我希望子域中www的所有请求始终转到www.domain.dev但是如果对location.domain.dev有任何请求,我想将该请求保留在地址栏中(即我不希望人们看到潜在的变化)

我目前在.htaccess中有以下内容

<IfModule mod_rewrite.c>
  Options +FollowSymLinks
  RewriteEngine On

  RewriteBase /

  RewriteCond %{HTTP_HOST} ^([^.]+)\.domain\.dev
  RewriteRule ^(.*)$ http://domain.dev/site/%1 [QSA,NC]

  # Removes index.php
  RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ /index.php?/$1 [L]
</IfModule>

这甚至可能吗?

1 个答案:

答案 0 :(得分:0)

你非常接近。为了不重定向浏览器(导致地址栏改变),您需要摆脱重写规则的目标http://domain.dev部分:

RewriteRule ^(.*)$ /site/%1/$1 [QSA,NC]

假设 * .domain.dev www.domain.dev 具有相同的文档根目录。如果它们不同,您可能必须启用mod_proxy并添加P标志,以便请求代理而不是重定向浏览器:

RewriteRule ^(.*)$ http://domain.dev/site/%1/$1 [QSA,NC,P]