【问题标题】:htaccess subdomain redirect changes addresshtaccess 子域重定向更改地址
【发布时间】:2012-04-25 17:06:49
【问题描述】:

我已经阅读 SO 上的帖子两天了,尝试了十几个示例,但无法让我的重写工作。

这是我的情况:
我在 Ubuntu 上运行 Apache。
我的根目录中有 2 个文件(file1.php、file2.php)和一个文件夹(网站)
我想将 www.mydomain.com 和 domain.com 重定向到该文件夹​​。该部分正在使用这套规则:

RewriteCond %{HTTP_HOST} ^(www.)?mydomain\.com$
RewriteCond %{REQUEST_URI} !^/website/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /website/$1
RewriteCond %{HTTP_HOST} ^(www.)?mydomain\.com$
RewriteRule ^(/)?$ website/ [L]

现在我正在尝试使用子域。
demo.mydomain.com 应该去 www.mydomain.com/file1.php?v=demo demo.mydomain.com/file2.php 应该去 www.mydomain.com/file2.php?v=demo 并且浏览器地址栏中的 url 不应该改变。

我已经有了这个:

RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(.*)\.mydomain\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.*)$   http://www.mydomain.com%{REQUEST_URI}?v=%1 [L]
##
RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$ [NC]
RewriteCond %{HTTP_HOST} ^(.*)\.mydomain\.com$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ file1.php?v=%1 [L]

这会导致 demo.mydomain.com/file2.php 转到 www.mydomain.com/file2.php?v=demo,这没关系,但地址栏中的 URL 也会发生变化。那不行。
demo.mydomain.com 重定向到 www.mydomain.com 到网站文件夹,这是完全错误的。

如您所见,我快到了。我只是缺少一些小碎片。
请帮帮我。

【问题讨论】:

    标签: .htaccess mod-rewrite subdomain


    【解决方案1】:

    您在重写规则中使用的域与当前域不同(demo.mydomain.com 与 www.mydomain.com)。 Apache 不知道这些指向同一个服务器和 document_root,因此 apache 会进行重定向。只需删除域名部分即可。

    RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$ [NC]
    RewriteCond %{HTTP_HOST} ^(.*)\.mydomain\.com$ [NC]
    RewriteCond %{REQUEST_FILENAME} -f
    RewriteRule ^(.*)$   $1?v=%1 [L,QSA]
    ##
    ...
    

    【讨论】:

      猜你喜欢
      • 2013-09-20
      • 1970-01-01
      • 2010-11-21
      • 2013-06-11
      • 1970-01-01
      • 2016-01-09
      • 1970-01-01
      • 1970-01-01
      • 2020-06-06
      相关资源
      最近更新 更多