【问题标题】:htaccess redirect + hide subfolder in urlhtaccess 重定向 + 在 url 中隐藏子文件夹
【发布时间】:2014-01-25 13:30:40
【问题描述】:

我环顾四周并尝试了一些有效的规则和条件;而有些不起作用或条件会捕获太多导致其他域也重定向。这对我有用:

# Redirect (also catches www.)
RewriteCond %{HTTP_HOST} ^(www.)?domain.com$
RewriteRule ^(/)?$ subfolder [L]

如果您访问 www.domain.com 或 domain.com 被重定向到 domain.com/subfolder 太好了,但我也希望 /subfolder 部分从 url 中隐藏。

我如何做到这一点?

请注意,我有多个域,每个域都应该重定向到自己的文件夹。 我还希望每个页面在其各自的文件夹中仍然可见。

所以 www.domain.com/abc 应该重定向到 domain.com/subfolder/abc 但显示 domain.com/abc

【问题讨论】:

    标签: regex apache .htaccess redirect mod-rewrite


    【解决方案1】:

    试试这个规则:

    # remove www
    RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
    RewriteRule ^ http://%1%{REQUEST_URI} [NE,R=301,L]
    
    RewriteCond %{HTTP_HOST} ^(www\.)?domain\.com$
    RewriteRule !^subfolder/ /subfolder%{REQUEST_URI}  [L]
    

    【讨论】:

    • 这行得通!但我只是注意到 www.部分被视为可选,而不是被删除。虽然这很好,但是否可以让它也总是删除 www. ?
    • 实际上我们需要一个单独的 www 删除规则,因为这只是内部重写。
    • 别忘了你需要RewriteEngine on
    • @Zerreth。您通常希望在 DNS 设置中允许 www,方法是添加 CNAME 记录,然后在 .htaccess 或 http.conf 中进行简单的重定向,而不需要 www
    • anubhava 你能告诉我如何排除几个文件夹,比如RewriteRule !^subfolder/ OR !^subfolder2/ OR !^subfolder3/ /subfolder%{REQUEST_URI} [L]
    猜你喜欢
    • 2015-11-19
    • 1970-01-01
    • 1970-01-01
    • 2013-03-09
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    • 2020-01-13
    • 2014-06-17
    相关资源
    最近更新 更多