【问题标题】:htaccess rules for domain mapping and preserve current configuration用于域映射的 htaccess 规则并保留当前配置
【发布时间】:2015-01-01 09:10:43
【问题描述】:

我有一个基于注册用户名的动态子域的站点,这些用户名使用 php 解析,因此我的 htaccess 可以正常工作。 下面是一些关于如何从 $_SERVER 进行重定向的示例

thecspace.com/blogs

["QUERY_STRING"]          => string(21) "template=www&q=blogs/"

http://www.thecspace.com/blogs/test-pp-blog-2904

["QUERY_STRING"]          => string(38) "template=www&q=blogs/test-pp-blog-2904"

http://danvlad.thecspace.com/blogs/test-pp-blog-2904

["QUERY_STRING"]          => string(47) "template=danvlad&q=blogs/test-pp-blog-2904"

当前的 HT 访问权限

RewriteCond %{HTTP_HOST} ^thecspace\.com$ [NC]
RewriteRule ^(.*)$ http://www.thecspace.com/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)?\.thecspace\.com
RewriteRule ^$ index.php?template=%2 [L,QSA]

RewriteCond %{HTTP_HOST} ^(www\.)?([^\.]+)?\.thecspace\.com
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule (.*) index.php?template=%2&q=$1 [L,QSA]

现在是困难的部分。我想允许自定义域使用相同的规则。假设 devdemogroup 有域 devdemogroup.com。一旦他们将 DNS 更改为指向 domain.com,我希望能够允许该域使用 domain.com 中的当前代码

因此,理论上对 www.danvlad.com 的请求将是一个 this 查询字符串

["QUERY_STRING"]          => string(47) "template=danvlad"

和 www.danvlad.com/blogs/

["QUERY_STRING"]          => string(47) "template=danvlad&q=blogs"

我试过了,但是不行

RewriteCond   %{HTTP_HOST}   !^www\.thecspace\.com$ [NC]
RewriteCond   %{HTTP_HOST}   ^([^.]+)\.thecspace\.com$ [NC]
RewriteRule   ^$ /index.php?template=%1 [L]

RewriteCond   %{HTTP_HOST}   !^www\.thecspace\.com$ [NC]
RewriteCond   %{HTTP_HOST}   ^www\.([^.]+)\.thecspace\.com$ [NC]
RewriteRule   ^$ /index.php?template=%1 [L]

RewriteCond   %{HTTP_HOST}   !^www\.thecspace\.com$ [NC]
RewriteCond   %{HTTP_HOST}   ^www\.([^.]+)\.com$ [NC]
RewriteRule   ^$ /index.php?template=%1 [L]

RewriteRule   ^(.*)$ /index.php?template=%1?q=$1 [L,QSA]

有人可以帮忙吗? 谢谢

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite dns


    【解决方案1】:

    最终解决方案

    Route53 thecspace.com 专区 danvlad .thecspace.com CNAME www.thecspace.com www.danvlad .thecspace.com CNAME www.thecspace.com

    丹弗拉德区 www.danvlad.com CNAME www.thecspace.com

    选项 FollowSymLinks 允许覆盖所有 允许所有人 DirectoryIndex index.php

    # Redirect thecspace.com and cspace.thecspace.com to www.thecspace.com
    
    RewriteCond %{HTTP_HOST} ^thecspace\.com$ [NC] [OR]
    RewriteCond %{HTTP_POST} ^cspace.thecspace.com$ [NC]
    RewriteRule ^(.*)$ http://www.thecspace.com/$1 [R,L,QSA]
    
    # Redirect abc.thecspace.com to www.thecspace.com/index.php?template=abc&q=zzz
    
    RewriteCond %{HTTP_HOST} !^www\.thecspace\.com$ [NC]
    RewriteCond %{HTTP_HOST} ^([^.]+)\.thecspace\.com$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule ^(.*)$ /index.php?template=%1&q=$1 [L]
    
    # Redirect www.abc.thecspace.com to www.thecspace.com/index.php?template=abc&q=zzz
    
    RewriteCond %{HTTP_HOST} !^www\.thecspace\.com$ [NC]
    RewriteCond %{HTTP_HOST} ^www\.([^.]+)\.thecspace\.com$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule ^(.*)$ /index.php?template=%1&q=$1 [L]
    
    # Redirect www.abc.com to www.thecspace.com/index.php?template=abc&q=zzz
    
    RewriteCond %{HTTP_HOST} !^www\.thecspace\.com$ [NC]
    RewriteCond %{HTTP_HOST} ^www\.([^.]+)\.com$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule ^(.*)$ /index.php?template=%1&q=$1 [L]
    
    # Redirect www.thecspace.com
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{REQUEST_FILENAME) !^$
    RewriteRule ^(.*)$ /index.php?q=$1 [L]
    

    也许它对某人有帮助。

    【讨论】:

      【解决方案2】:

      其实你最后一个RewriteRule是没有条件的,这样用:

      RewriteCond %{HTTP_HOST} !^www\.thecspace\.com$ [NC]
      RewriteCond %{HTTP_HOST} ^(?:www\.)?([^.]+)\.thecspace\.com$ [NC]
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^(.*)$ /index.php?template=%1?q=$1 [L,QSA]
      

      【讨论】:

      • devdemogroup.thecspace.com/blogs 现在重定向到 www.thecspace.com 并且 devdemogroup.com 没有将模板设置为 devdemogroup
      • 1.我没有任何 REDIRECT 标志,因此它无法重定向、检查其他规则和清除浏览器缓存。我的规则只是在内部重写为无法重定向的/index.php?template=%1?q=$1。 2. 您在问题中使用了www.devdemogroup.comwww.domin.comdevdemogroup.thecspace.com。哪一个是正确的? devdemogroup是开始部分还是中间部分?
      • thecspace.com = domain.com(我忘了在初始帖子中进行编辑)让我在重定向之前仔细检查并退出 devdemogroup.com - 没有模板 thecspace.com/blogs - 找不到 devdemogroup.thecspace.com - 模板= 开发演示组
      • 修改了初始帖子,修复了域名以消除任何混乱
      猜你喜欢
      • 2020-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-16
      相关资源
      最近更新 更多