Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache 使用.htaccess从一个目录重写登录页_Apache_.htaccess_Mod Rewrite_Url Rewriting - Fatal编程技术网

Apache 使用.htaccess从一个目录重写登录页

Apache 使用.htaccess从一个目录重写登录页,apache,.htaccess,mod-rewrite,url-rewriting,Apache,.htaccess,Mod Rewrite,Url Rewriting,我在我的站点的根目录中有大约30个登录页目录,为了整洁,我想将所有文件移动到/landing目录。我希望登录页的所有公共URL仍然有效,而不是在地址栏中显示“登录”目录 例如,我想要 www.site.com/happiness 显示存储在我的/landing/happiness目录中的内容,但我希望地址栏中的url仍然显示www.site.com/happiness 我现在在.htaccess中拥有的是 重写规则^happiness(.*)?$landing/happiness$1[NC,L,

我在我的站点的根目录中有大约30个登录页目录,为了整洁,我想将所有文件移动到/landing目录。我希望登录页的所有公共URL仍然有效,而不是在地址栏中显示“登录”目录

例如,我想要 www.site.com/happiness

显示存储在我的/landing/happiness目录中的内容,但我希望地址栏中的url仍然显示www.site.com/happiness

我现在在.htaccess中拥有的是

重写规则^happiness(.*)?$landing/happiness$1[NC,L,QSA]


这会显示内容,但会重写地址栏中的URL,并公开“landing”目录。如何在.htaccess中进行重写,使提供的文件位于登录目录中,但地址栏显示原始URL


谢谢你的帮助

当您输入一个不带尾随斜杠的目录URL时,就会发生这种情况,例如,
/happiness
/happiness/subdir
。在本例中,使用尾随斜杠重定向到URL

您可以通过始终在内部重定向中添加尾随斜杠来避免这种情况

RewriteRule ^happiness(?:/.*)?$ landing/$0/ [NC,L,QSA]

这样做的缺点是,即使是某个PHP文件,结尾也总是有一个斜杠。

“这显示内容很好,但会重写地址栏中的URL并显示“landing”目录。”不,它不会。你必须在某个地方有重定向规则或重定向机制。真的吗?你可能是对的,但你怎么这么肯定?你的规则只会重写,不会重定向,因为你没有使用[R]标志。你有更多的.htaccess规则吗?或者知道你是否在应用程序本身中进行了重定向吗?太好了!这似乎正在使用我刚刚尝试使用的新目录。今天早些时候我正在处理的目录仍然在重定向/公开地址栏中的/landing目录,尽管这可能是缓存在某处的内容。@TonyBrasunas浏览器当然会缓存301重定向。重新启动浏览器或清除浏览器缓存可能会有所帮助。