【问题标题】:Redirecting subdirectory to subdomain in .htaccess将子目录重定向到 .htaccess 中的子域
【发布时间】:2013-10-24 12:39:37
【问题描述】:

我想使用.htaccess 将子目录重定向到子域。我当前的代码:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP_HOST} ^(www.)?sub.example.com$
RewriteRule ^(/)?$ subdirectory [L]
</IfModule>

此代码重定向到sub.example.com/subdirectory。如何从新 URL 中删除 /subdirectory

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite subdomain


    【解决方案1】:

    将此规则放在最上面,在所有其他规则之前:

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

    完成 .htaccess:

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC]
    RewriteRule ^subdirectory/(.*)$ http://sub.example.com/$1 [L,NC,R=301]
    
    RewriteCond %{HTTP_HOST} ^(www\.)?sub\.example\.com$ [NC]
    RewriteCond %{REQUEST_URI} !(jpe?g|gif|bmp|png|tiff|css|js)$ [NC]
    RewriteRule !subdirectory subdirectory%{REQUEST_URI} [NC,L]
    
    RewriteRule ^index\.php$ - [L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    

    【讨论】:

    • 感谢您的回答!现在我可以访问 sub.example.com,但是出现了两个问题:Wordpress 搞砸了,这是它的截图:s8.postimg.org/5rupjqwdv/image.png - 没有模板结构、样式等。第二个问题是现在 example.com /subdirectory 指向 www.sub.example.com - www 是缺少的 URL。也许如果我们将 www 重定向到非 www 就可以解决这个问题?
    • 对于样式、JS 等解决方案很简单,只需在 css、js、图像文件中使用绝对路径而不是相对路径。这意味着您必须确保这些文件的路径以 http:// 或斜杠 / 开头。
    • 我也可以知道www.sub.example.com 是否也由 Wordpress 管理?
    • 是的,sub.example.com 在 Wordpress 上。我没有收到您之前的建议 - 我必须手动编辑网站的 CSS 吗?
    • 非常感谢,阿努巴瓦!你很棒! :))
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 2012-09-07
    • 2016-09-24
    • 2023-03-14
    相关资源
    最近更新 更多