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 中隐藏子文件夹的主要内容,如果未能解决你的问题,请参考以下文章