如何在重写目录下通过.htaccess创建子域

时间:2014-02-22 15:26:34

标签: php .htaccess mod-rewrite subdomain

我用这个.htaccess创建了一个子域名;它在我的www.example.com域上正常工作,但在www.example.pk上没有。我不明白问题出在哪里。

www.example.com

RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteCond %{HTTP_HOST} ^([-a-zA-Z0-9]+)\.example\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/?index\.php$ 
RewriteRule ^(.*)/*([0-9]+)*$ index.php?r=list&source=product&product_get=%1&page_page=$1 [NC,QSA,L]

www.example.pk

RewriteCond %{HTTP_HOST} !^www\.example\.pk$ [NC]
RewriteCond %{HTTP_HOST} ^([-a-zA-Z0-9]+)\.example\.pk$ [NC]
RewriteCond %{REQUEST_URI} !^/?index\.php$ 
RewriteRule ^(.*)/*([0-9]+)*$ index.php?r=list&source=product&product_get=%1&page_page=$1 [NC,QSA,L]

我创建了www.example.com域,然后创建了带有cpanel * .example.com的子域。有必要吗?

1 个答案:

答案 0 :(得分:0)

使用子域时,需要正确配置DNS以将子域指向服务器。 cpanel的子域特性可能已为您完成此操作,或者它已包含通配符cname dns记录。 DNS记录通常是缓存的,但我不确定是否也存在不存在的记录。

子域名是否已解析为我的服务器?

首先检查您的子域是否已解析为ip。打开终端并输入ping yoursubdomain.example.com(显然您需要将其替换为您的实际域名)。如果无法解析为ip,则DNS记录可能存在问题。如果您需要here或其他几个类似的网站,您可以在线完成。

编辑你的DNS

如果您的主机为您提供了手动编辑DNS记录的机会,则需要了解以下内容:

  • 你的dns里有1张A记录。这就是名称被翻译成ip的方式。
  • 使用CNAME记录将任何子域链接到该记录。

您可以添加一个wildcard-subdomain(将任何(un)可想象的子域名翻译到您的网站)或添加到您的dns的特定子域名。您可以通过添加

来实现
CNAME  (from) *.example.com (to) example.com

TTL(生存时间)是其他人可以缓存记录的时间。它最多会采用TTL让世界上的每个人“注意”你在dns记录中所做的改变。 This site提供了更多相关信息。

<强>的.htaccess

我不确定你想要改写什么样的网址,但有几件事你可以改变:

  • %{REQUEST_URI}始终以/开头。在您的情况下,无需在其后面添加?
  • 为了便于阅读,如果您使用%1 - 反向引用类型,请将相应条件直接放在它上面,即使事实证明它们没有被没有捕获组的其他条件覆盖。
  • ^(.*)/*([0-9]+)*$对我没有多大意义。它匹配每个网址,因为(.*)之后的所有内容都是可选的,并且可以存在无限次。我怀疑这是你想要的。

RewriteCond %{HTTP_HOST} !^www\.example\.pk$ [NC]
RewriteCond %{REQUEST_URI} !^/index\.php$
RewriteCond %{HTTP_HOST} ^([-a-zA-Z0-9]+)\.example\.pk$ [NC]
RewriteRule ^(.*)/*([0-9]+)*$ index.php?r=list&source=product&product_get=%1&page_page=$1 [NC,QSA,L]