Apache 使用.htaccess从一个目录重写登录页
我在我的站点的根目录中有大约30个登录页目录,为了整洁,我想将所有文件移动到/landing目录。我希望登录页的所有公共URL仍然有效,而不是在地址栏中显示“登录”目录 例如,我想要 www.site.com/happiness 显示存储在我的/landing/happiness目录中的内容,但我希望地址栏中的url仍然显示www.site.com/happiness 我现在在.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,
重写规则^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重定向。重新启动浏览器或清除浏览器缓存可能会有所帮助。