.htaccess 如何正确编辑htaccess以遮盖URL?

5vf7fwbs  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(115)

我的网站上有这个目录

example.net/cube

除了一个htaccess文件之外,没有其他内容,该文件应该将用户重定向到其他目录

example.net:5000/newdir

但用户仍应example.net/cube在其地址栏上看到www.example.com。
这是我的htaccess

RewriteEngine On
RewriteRule ^/?$ ../:5000/newdir

但它似乎什么也没做,这是怎么回事?

  • 谢谢-谢谢
zu0ti5jz

zu0ti5jz1#

在您的方法实现时,通过内部重写无法实现此操作。原因是从http服务器的Angular 来看,目标URL指向一个完全不同的主机。
您可以实现外部重定向,但这将更改客户端地址栏中可见的URL。
你唯一的选择是使用http服务器的代理模块 * 如果该模块已经安装并且可用 *。对于apache http服务器,这意味着你必须安装mod_proxymod_proxy_http模块。或者确保它们已经安装并且对于你的http主机可用。
如果是这样,您有两种选择:
您可以使用http服务器主机配置中的代理模块,让http主机“example.com“侦听端口80:

ProxyRequests off
ProxyPass /cube http://example.com:5000/newdir
ProxyPassReverse /cube http://example.com:5000/newdir

或者在http主机配置中的/cube文件夹的<Location ...>块内进行了轻微更改:

<Location "/cube/">
    ProxyRequests off
    ProxyPass http://example.com:5000/newdir/
    ProxyPassReverse http://example.com:5000/newdir/
</Location>

作为一种替代方案,您可以使用嵌入在重写模块中的代理模块,或者在http服务器主机的中央配置中,或者在该主机的顶层DOCUMENT_ROOT文件夹中的分布式配置文件(.htaccess)中:

RewriteEngine on
RewriteRule ^/?cube(.*)$ http://example.com:5000/newdir$1 [P]

或者在/cube文件夹内的分布式配置文件中稍做更改:

RewriteEngine on
RewriteRule ^(.*)$ http://example.com:5000/newdir/$1 [P]

无论哪种方式,你都需要开始参考模块的文档。作为典型的开源软件,它的质量非常好,并附带了很好的例子:
https://httpd.apache.org/docs/2.4/mod/mod_proxy.html

相关问题