2016-04-29 9 views
0

私はApacheサーバー上で動作しているWebサイトで作業しています。 PHPの工場が行い、このように見えるURLを取りますhtaccessを使ってクライアントからURLの一部を隠す方法は?

site.com/page/view/[id]/[vanity-url] 

ブラウザではと表示されますので、しかし、クライアントは、ビューからURLの一部を非表示にしたい:

site.com/[vanity-url] 

サーバーそれでも完全なURLを参照する必要があります。

私は、検索の時間後に様々なRewriteRulesを試してみた、と私は来ているように見える最も近いです:

RewriteRule ^page/view/(.*)/(.*)$ /$2 [R,L] 

...しかし、それは何もしていないようです。私は.htaccesが動作していることを確かに知っています。

私は間違っていますか?

答えて

1

残念ながら、これは不可能です。理由を説明しましょう:

サーバーで完全なURLを確認する必要があります。具体的には、これにはidセグメントが含まれています。これは、フレームワークが必要としていると確信しています(サーバーが仮想セグメントを見る必要がある場合は必要ありません)。あなたが提供したコードは、フルURLをバニティURLにリダイレクトするので、次のリクエストのために完全なURLがサーバーに見えなくなります。

/page/view/2/about-usに移動するとから/about-usにリダイレクトされ、アドレスバーはそれを反映して変更されます。これにより、新しいの要求がサーバに送信され、/about-us仮想URLのみが含まれます。

その結果、あなたが戻って完全なURLへ書き換え虚栄心のURLする必要があります(リダイレクトせずに、そのままアドレスバーに/about-us留まるように)、しかし、あなたは行うことができませんこれは、バニティURLにidセグメントが含まれていないため、フレームワークが正しい応答を提供するための要件であるようです。 Apacheは特定のバニティURLのIDを推測できないことに注意してください。

関連する問題