2016-12-21 8 views
0

URLからフォルダ名を隠そうとしていて、悲惨に失敗しています。私のURL id 0.0.0.0/project/api/api/foo。ご覧のとおり、apiの2つがあり、私は1つだけ表示したいだけです。 .htaccessは、私は、ディレクトリのルートに存在して取り組んできましたし、次のようになります。URLのディレクトリ名を隠す

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

私はこのカップルのさまざまなバリエーションを試してみたが、何も作業していません。最初のapiはディレクトリ名で、2番目のapiはルート用に配置されたものであり、ディレクトリではありません。両方とも持っているのは醜いので、どうすれば最初のapiを削除できますか?サーバーが要求を受け入れるようにするに

答えて

1

.htaccessを混乱させる必要はありません。 2番目のapiパスを含まないようにルートファイルを更新するだけです。

あなたは手動であなたのルート上で定義した大手apiセグメントを削除するか、またはあなたはLaravelはroutes/api.phpファイル内のすべてのルートにデフォルトで追加されます自動化されたapiプレフィックスを削除することができます。

デフォルトのプレフィックスを削除するには、app/Providers/RouteServiceProvider.phpファイルを開き、下部にあるmapApiRoutes()メソッドに移動し、'prefix' => 'api',行を削除します。

+1

それはそれだった!私はWROOOONGの道を下っていた。修正していただきありがとうございます! – Mike

1

あなたはこれを使用することができます実際の要求はYOURDOMAIN/project/api/api/SOMETHING

たかのようにこのルールは、(サーバーで) YOURDOMAIN/project/api/SOMETHINGルックスにすべてのリクエストを行います

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

しかし、ノードあなたのウェブサイト/アプリケーションが正しいことを確認する必要があるノード。

+0

まず、ありがとうございます!あなたの提案を試みましたが、 '0.0.0.0/project/api/api/foo'と表示されます。私はすべてのリンクをダブルチェックして、それらは正しいです。私はそれが問題なのかどうかは分かりませんが、これはLaravelのためのものです。私はRestfullのエンドポイントをサーバーに置くことができるので、最後に 'foo'が表示されます。 – Mike

+0

「見る」とはどういう意味ですか?私の答えと同じように、この変更**はあなたのリンクを変更しません**。それはサーバーにリンクをどのように扱うかを伝えるだけです。 – Dekel

+0

ああ、私はより密接に読むべきだと思います。この記事のタイトルで述べたように、私は自分のURLにapiのディレクトリ名を隠そうとしています。 – Mike

関連する問題