繁体   English   中英

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

[英]how to create subdomain by .htaccess on rewrite directory

我用这个.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子域。 是否有必要?

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

子域是否已经解析到我的服务器?

首先检查您的子域是否已经解析为IP。 打开一个终端,然后键入ping yoursubdomain.example.com (显然,您需要将其替换为您的实际域)。 如果无法将其解析为IP,则您的DNS记录可能存在问题。 如果要在这里或其他几个类似的站点上,可以在线进行操作。

编辑您的DNS

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

  • 您的dns中有1条A记录。 这是将名称转换为ip的方式。
  • 所有子域都使用CNAME记录链接到该记录。

您可以添加一个通配符子域(它将任何(无法理解的)子域转换到您的站点)或特定子域到您的dns。 您可以通过添加

CNAME  (from) *.example.com (to) example.com

TTL(生存时间)是其他人可以将记录缓存多长时间。 最多需要TTL才能使世界上的每个人“注意”您在dns记录中所做的更改。 该站点提供了有关此的更多信息。

.htaccess

我不确定您要重写哪种网址,但是您可以更改以下几项:

  • %{REQUEST_URI}始终以/开头。 无需添加? 根据您的情况在它后面。
  • 为了提高可读性,如果您使用%1 -type-of-backreferences,则将相应条件直接放在其上方,即使事实证明它们没有被没有捕获组的其他条件覆盖。
  • ^(.*)/*([0-9]+)*$对我来说意义不大。 它匹配每个url,因为(.*)之后的所有内容都是可选的,并且可以存在无数次。 我怀疑这就是您想要的。

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]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM