htaccess 重定向 + 在 url 中隐藏子文件夹

Posted

技术标签:

【中文标题】htaccess 重定向 + 在 url 中隐藏子文件夹【英文标题】:htaccess redirect + hide subfolder in 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

【问题讨论】:

【参考方案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]

以上是关于htaccess 重定向 + 在 url 中隐藏子文件夹的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess 从站点根目录重定向到公共文件夹,在 URL 中隐藏“公共”?

.htaccess 将文件夹重定向到 url

无法在 .htaccess 中正确重写和重定向 url

url中有空格时htaccess重定向

重定向并将参数保留在 .htaccess 的 url 中

301 使用 .htaccess 重定向 URL 模式