如何使用htaccess隐藏URL上的父文件夹?

问题描述

我已经对这个问题进行了广泛的搜索,但没有找到解决方案。我在本地工作,所以我有这个网址:

http://localhost/IASON/iasongitlab/static_website/html/solutions.html

我设法隐藏了文件扩展名,所以现在我的 URL 是这样的:

http://localhost/IASON/iasongitlab/static_website/html/solutions

但现在我需要从我的 URL 中隐藏 /html/ 文件夹,使其看起来像这样:

http://localhost/IASON/iasongitlab/static_website/solutions

这只是一个例子。我有多个视图,所以我需要在 htaccess 中编码以隐藏每个视图上的 /html/ 文件夹。

这是我的 htaccess 文件

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.PHP -f
RewriteRule ^(.*)$ $1.PHP [NC,L] 

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.html -f
RewriteRule ^(.*)$ $1.html [NC,L]

我尝试了多种建议但都没有成功,如果您有任何解决此问题的见解,我将不胜感激。

解决方法

根据您展示的样品,您可以尝试以下操作吗?在测试您的网址之前,请确保您清除浏览器缓存。

RewriteEngine ON
RewriteRule ^(IASON/iasongitlab/static_website)/(solutions)/?$ $1/html/$2.html [NC,L]


或者,如果您不想对路径详细信息进行硬编码并最终在 uri 中查找 solutions,那么您可以尝试以下操作。确保您一次只能遵循或高于规则。

RewriteEngine ON
RewriteRule ^(.*)/(solutions)/?$ $1/html/$2.html [NC,L]