.htaccess 重定向到子文件夹并隐藏在 uri
Posted
技术标签:
【中文标题】.htaccess 重定向到子文件夹并隐藏在 uri【英文标题】:.htaccess redirect to subfolder and hide in uri 【发布时间】:2015-11-19 08:12:30 【问题描述】:我想重定向每个请求:
http://subdomain.domain.com/customer/
到
http://subdomain.domain.com/customer/httpdocs/web/
仍然继续在浏览器中显示 http://subdomain.domain.com/customer
并使用位于“客户”文件夹中的 .htaccess 文件。
这是我的实际 .htaccess,重定向有效,但浏览器显示完整路径:
RewriteEngine On
RewriteRule ^$ httpdocs/web [L]
【问题讨论】:
这看起来像是一个缓存响应 - 确保您的浏览器缓存是清晰的。此子域是否位于父域之外的子目录中?如果有,父目录是否也有 .htaccess 文件? 我正在清除每个 htaccess mod 的 firefox 缓存,当然不是。子域位于,尊重 plesk9 结构,以这种方式: /var/www/vhosts/domain/subdomains/subdomain/ 并且没有其他 .htaccess “每个请求” - 你的意思是/customer/<anything>
到另一个目录中对应的<anything>
吗?
只是您当前的RewriteRule
不会“重定向”/customer/<anything>
(仅/customer
),但您说它“有效”-这让我想知道是否发生了其他事情。此外,您当前的规则不应触发外部重定向,您说它正在做什么?仅当您之前使用 R=301
标志(偶然)进行测试时,才会发生外部重定向 - 然后将被缓存。
@anubhava 终于成功了!请回答,以便我设置为已接受
【参考方案1】:
要为您的子域重写任何内容,您可以使用以下规则:
RewriteEngine On
RewriteRule ^(.*)$ httpdocs/web/$1 [L]
^$
只会重写登录页面,而.*
将匹配所有 URI。
【讨论】:
【参考方案2】:试试下面的条目:
RewriteCond %HTTP_HOST ^(www\.)?subdomain.domain.com
RewriteRule ^/customer/(.*)$ /customer/httpdocs/web/$1 [PT,L,QSA]
【讨论】:
它不起作用(禁止)..我必须将 .htaccess 放在 /customer/ 文件夹中,所以我认为原点应该是 ./ 而不是 /customer/ 您可以尝试在虚拟主机中添加条目,看看是否有帮助?以上是关于.htaccess 重定向到子文件夹并隐藏在 uri的主要内容,如果未能解决你的问题,请参考以下文章
.htaccess 从站点根目录重定向到公共文件夹,在 URL 中隐藏“公共”?
如何使用 htaccess 将 example.com/x/restofurl 重定向到 example.com/y/restofurl