.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将域重定向到子文件夹

.htaccess重定向到子文件夹(即公用文件夹)

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

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

.htaccess 仅在 GET 参数存在时重定向

如何使用 htaccess 将 example.com/x/restofurl 重定向到 example.com/y/restofurl