如何从用户隐藏.htaccess重定向
我的服务器具有域www.domain.com和多个子域sub1.domain.com、sub2.domain.com。它们都指向服务器根目录 我希望用户通过子域访问特定文件夹。例如:如何从用户隐藏.htaccess重定向,.htaccess,redirect,mod-rewrite,subdirectory,subdomain,.htaccess,Redirect,Mod Rewrite,Subdirectory,Subdomain,我的服务器具有域www.domain.com和多个子域sub1.domain.com、sub2.domain.com。它们都指向服务器根目录 我希望用户通过子域访问特定文件夹。例如: sub1.domain.com/someURI=>sub1.domain.com/subFolder1/someURI sub2.domain.com/someURI=>sub1.domain.com/subFolder2/someURI 我想对用户隐藏这些重定向。我尝试了以下.htaccess文件: Rewr
- sub1.domain.com/someURI=>sub1.domain.com/subFolder1/someURI
- sub2.domain.com/someURI=>sub1.domain.com/subFolder2/someURI
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^sub1.domain.com$
RewriteRule ^(.*)$ http://sub1.domain.com/subFolder1/$1 [R,L]
RewriteCond %{HTTP_HOST} ^sub2.domain.com$
RewriteRule ^(.*)$ http://sub2.domain.com/subFolder2/$1 [R,L]
它仅在没有任何URI的情况下正确重定向,并且重定向可见。您有两个问题导致外部重定向:
重写规则中使用R
标志
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} =sub1.domain.com
RewriteRule ^((?!subFolder1/).*)$ subFolder1/$1 [NC,L]
RewriteCond %{HTTP_HOST} =sub2.domain.com
RewriteRule ^((?!subFolder2/).*)$ subFolder2/$1 [NC,L]
是否有任何原因阻止您创建指向所需目录的两个不同虚拟主机?“且重定向可见”-查看
R
标志代表什么。@CBroe我知道R代表重定向。我发现一些信息,没有参数的R等于R=302-临时移动,应该对用户隐藏。@Eineki是托管服务器,我没有所需的权限。R标志强制外部重定向,您需要内部重定向(没有到浏览器的往返)。也许你应该略去那面旗子…它就像一个符咒。非常感谢。你能解释一下重写规则吗,因为我不确定我是否得到了它?重写规则
与添加了一个负前瞻的规则差不多,即(?!subFolder1/)
,这意味着不转发is请求已经从/子文件夹2/