隐藏URL中的目录名称

时间:2016-12-21 00:14:41

标签: php apache .htaccess laravel xampp

我一直在试图隐藏网址中的文件夹名称,而我却惨遭失败。我的网址为0.0.0.0/project/api/api/foo。你可以看到有两个api,我只想展示一个。我一直在使用的.htaccess驻留在目录的根目录下,如下所示:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /api/api/$1 [L]
</IfModule>

我尝试了几种不同的变体,但没有任何效果。第一个api是目录名,第二个api是Laravel为路由输入的内容,而不是目录。同时拥有两者都很难看,那么如何删除第一个api

2 个答案:

答案 0 :(得分:1)

要让服务器接受您的请求,您可以使用:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^project/api/(.*)$ /project/api/api/$1 [L]
</IfModule>
  

此规则会使YOURDOMAIN/project/api/SOMETHING的每个请求看起来(在您的服务器中),就像实际请求是YOURDOMAIN/project/api/api/SOMETHING

一样

但是 - 您需要确保您的网站/应用程序中的链接正确的节点。

答案 1 :(得分:1)

没有必要弄乱.htaccess。您只需将路由文件更新为不包含第二个api路径。

您可以删除您在路由上手动定义的前导api段,也可以删除Laravel默认添加到{{1}中所有路由的自动api前缀文件。

要删除默认前缀,请打开routes/api.php文件,转到底部的app/Providers/RouteServiceProvider.php方法,然后移除mapApiRoutes()行。