【问题标题】:Hide directory name in URL在 URL 中隐藏目录名称
【发布时间】:2017-05-06 07:34:30
【问题描述】:

我一直试图从 URL 中隐藏文件夹名称,但我失败了。我的网址 ID 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?

【问题讨论】:

    标签: php apache .htaccess laravel xampp


    【解决方案1】:

    没有必要弄乱 .htaccess。您只需更新您的路线文件,使其不包含第二个api 路径。

    您可以删除您在路由上手动定义的前导 api 段,也可以删除 Laravel 默认为 routes/api.php 文件中的所有路由添加的自动 api 前缀。

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

    【讨论】:

    • 就是这样!我正沿着 WROOOONG 的道路前进。感谢您的修复!
    【解决方案2】:

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

    <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

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

    【讨论】:

    • 首先,谢谢!我试过你的建议,我仍然看到0.0.0.0/project/api/api/foo。我仔细检查了所有链接,它们是正确的。我不确定这是否重要,但这是针对 Laravel 的,它允许我提供 Restfull 端点,这就是为什么你会在最后看到 foo。
    • 你是什么意思“看到”?正如我的回答 - 此更改不会更改您的链接。它只告诉服务器如何处理链接。
    • 啊,我想我应该更仔细地阅读。正如我在这篇文章的标题中提到的,我希望在我的 url 中隐藏 api 目录名称。
    • 所以不要把它放在 URL 中 :)
    • 它存在于 URL 中,因为你把它放在那里。如果你不把它放在那里 - 它就不会在那里。
    猜你喜欢
    • 1970-01-01
    • 2016-09-22
    • 2014-06-23
    • 2014-07-08
    • 2014-04-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多