【问题标题】:Redirect subdomain to a specific folder only without the main domain仅在没有主域的情况下将子域重定向到特定文件夹
【发布时间】:2017-05-25 05:28:57
【问题描述】:

我有这样的链接:

a.site.co.il
b.site.co.il
...

我将服务器配置为使用通配符并将这些子域重定向到此 IP 上的文件夹:

62.90.154.000/goin

然后,我在 62.90.154.000 根目录上创建了一个 htaccess,因此使用子域将重定向到特定文件夹。
这方面的一个例子是:

a.site.co.il  =>  62.90.154.000/goin

但是IP不会重定向到goin文件夹,而是重定向到IP本身:

62.90.154.000  =>  62.90.154.000

这是我的 htaccess:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /

RewriteCond %{SCRIPT_FILENAME} !-d  
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^(.+)$ /$1/ [R=301,L]
RewriteRule ^(!62?|.*)$ goin/index.php?subdomain=$1 [L]

这似乎可行,但问题是此 htaccess 还将主域 (62.90.154.000) 重新编入子域文件夹!
我该如何解决这个问题?!

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite


    【解决方案1】:

    这条规则:

    RewriteRule ^(!62?|.*)$
    

    只是跳过以/62 开头的 REQUEST_URI。它不会跳过您的 IP 地址。

    你可以使用:

    Options +FollowSymLinks
    RewriteEngine On
    RewriteBase /
    
    # skip below rule for IP addresses that start with 62.
    RewriteCond %{REMOTE_ADDR} ^62\. [OR]
    RewriteCond %{HTTP_HOST} ^62\.
    RewriteRule ^ - [L]
    
    RewriteCond %{SCRIPT_FILENAME} !-f
    RewriteRule [^/]$ %{REQUEST_URI}/ [L,R=301,NE]
    
    RewriteCond %{HTTP_HOST} ^(?!www\.)[^.]+\.site\.co\.il$ [NC]
    RewriteRule .* /goin/$0 [L,NE]
    
    RewriteCond %{SCRIPT_FILENAME} !-d
    RewriteCond %{SCRIPT_FILENAME} !-f
    RewriteRule ^(.*)$ goin/index.php?subdomain=$1 [L,QSA]
    

    确保在测试此更改之前完全清除浏览器缓存。

    【讨论】:

    • 您的示例不会对子域进行重定向。它们都重定向到相同的 IP 名称。
    • 你能设置一个重定向规则,让任何像这样的子域:a.site.co.il 重定向到我 IP 上的某个文件夹吗?
    • 很抱歉这还不够清楚。我编辑了这个问题。所以:a.site.co.il => 62.90.154.000/goin AND 62.90.154.000 => 62.90.154.000(不是 62.90.154.000/goin)
    • 这在某种程度上是有效的,但 url 最后用“/goin”改变了。您可以在不更改 url 的情况下将子域重定向到 goin 文件夹吗?
    • 非常感谢,真是天才:)
    猜你喜欢
    • 2018-06-14
    • 2016-12-13
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 2013-07-10
    • 2022-01-17
    • 2010-11-21
    • 2021-07-03
    相关资源
    最近更新 更多