我想要做的是提供一个诸如“index.html”的文件,并让其 URL 为 mysite.com/boat-repair/electrical-system-repair。
我尝试将目标文件放在一系列子目录中,希望目录名称会显示在地址栏中,但这仍然只会拉出目标文件,而不会更改地址栏。我总是看到这种情况,但我似乎找不到解决问题所需的资源。我尝试了这个实验:
RewriteEngine On
RewriteRule ^boat-repair/?$ boat-repair-electrical-system-repair.html
当我输入 mysite.com/boat-repair.html 时,它只显示一个名为 boat-repair.html 的测试 html 页面,没有更改 url 并且没有加载 boat-repair-electrical-system-repair.html 页面。
显然我在这里遗漏了一些东西,有人能给我指出正确的方向吗?我已经研究了好几个小时,但显然仍然不知道如何实现我的目标。
答案1
迈克尔...谢谢你的线索...虽然更多的细节会更有帮助,但它让我思考这个规则应该如何运作。
这是我想出的工作代码:
RewriteEngine On
RewriteRule ^/?$ /boat-repair/electrical-system-repair [NC]
RewriteRule ^boat-repair/electrical-system-repair/?$ /index.html [NC]
第一条规则告诉服务器在进入根目录时提供以下服务:boat-repair/electrical-system-repair。
第二条规则告诉服务器,如果匹配模式:boat-repair/electrical-system-repair,则提供 index.html
最后一步提供的文件(index.html)可以命名为任何你喜欢的名字,因为它会被加载,但不会显示在地址栏中。
因此,在实施这两条规则之后,您将获得:http://yoursitename.com/boat-repair/electrical-system-repair/在地址栏中,现在我只需要想办法删除尾随的斜杠。
这些规则当然放在了 htaccess 文件中。
为了使此操作有效,您必须在规则中命名文件夹,即使它们只是虚拟文件夹。如果是虚拟文件夹,请确保在每个文件夹中放置一个名为“请勿删除此文件夹”的文本文档,以便六个月后您不会查看这些空文件夹并删除它们!
我希望这可以帮助其他人在其网站上尝试实现这一点。
答案2
你可能已经尝试过这个了,但是...你的服务器是自托管的吗?如果是的话,请重启服务器,这可能会起作用,因为它可能不会显示硬盘上的文件,而是显示加载到内存中的文件