通配符子域问题以及指向其他页面的链接

时间:2011-12-09 17:45:33

标签: apache mod-rewrite subdomain wildcard-subdomain

在使用通配符子域时,我遇到了与页面链接的麻烦,并希望能帮助您找到解决方案。

我希望用户拥有自己的子域来查看自己的网站内容,以便用户输入" user1.domain.com"服务器将有一个重写规则,将请求定向到根目录中的index.php页面。此index.php页面将用于所有子域,并将根据查询字符串中传递的子域提供数据库中的内容。

这部分工作得很好,它可以提供index.php中的内容。当index.php页面加载时,它包含一个菜单(HOME | RENTALS | CONTACT US)。当我点击菜单链接转到另一个页面时出现问题。 URL地址会更改,但页面内容不会更改。

以下是一个例子:如果我点击" RENTALS"我希望用户转到rental.php页面并显示" user1"子域名......但是这里发生了什么:

链接方案1:

<a href="http://user1.domain.com/rentals.php">RENTALS</a>   --> URL address bar changes to "user1.domain.com/rentals.php" but the page doesn't change, it still stays on the index.php content

链接方案2:

 < a href="rentals.php" >RENTALS< /a >   --> URL address bar changes to "user1.domain.com/rentals.php" but the page doesn't change, it still stays on the index.php content

链接方案3(如果我对域进行硬编码并省略链接有效的通配符子域):

<a href="http://www.domain/public_site/rentals.php">RENTALS</a>   --> URL address bar changes to "http://www.domain.com/public_site/rentals.php" AND IT WORKS, the rentals.php page loads and serves up the content.

方案3的问题是我想要的网址是:&#34; user1.domain.com/rentals.php"

我想知道这是否可以在重写条件下设置,但我无法弄清楚。

如果有人可以提供帮助,我将不胜感激!

这是我的目录结构:

ROOT
  |
  PUBLIC_SITE
     |
     index.php
     rentals.php
     contactus.php

这是apache重写规则(第一条规则有效。我添加的第二条规则希望解决我的问题,但它没有解决问题):

<IfModule mod_rewrite.c>
   Options +FollowSymLinks
   Options +Indexes
   RewriteEngine On

   ####Rewrite subdomain request to public_site/index.php
   RewriteCond %{HTTP_HOST} !www.domain.com$ [NC]
   RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).domain.com [NC]
   RewriteRule ^(.*)$  /public_site/index.php?subdomain=%2 [L]

   #### Rewrite rule for rentals.php page
   RewriteCond %{HTTP_HOST} ^(www.)?([a-z0-9-]+).domain.com/rentals.php [NC]
   RewriteRule ^(.*)$  /public_site/rentals.php?s=%2 [L]

</IfModule>

1 个答案:

答案 0 :(得分:0)

在进入重写后,我自己想出来了......

只需将此代码放在“主域”规则之前:

#### Rewrite rule for rentals.php page
   RewriteCond %{REQUEST_URI} ^/rentals.php?$ [NC]
   RewriteRule ^(.*)$  /public_site/rentals.php [L]