2016-08-15 9 views
0

Apache ServerでホストされているURLはhttp://10.20.109.99:10034/a/b/c/d/index.htmlです。 a/b/cを無視して、URLをhttp://10.20.109.99:10034/d/index.htmlに短縮するためにRewriteRuleを使用したいと思います。 、httpd.conf内のApache RewriteRule

<VirtualHost *:80> 
RewriteEngine On 
RewriteRule ^http://10.20.109.99:10034/d/index.html$ http://10.20.109.99:10034/a/b/c/d/index.html [R,L] 
</VirtualHost> 

と私は、ブラウザのアドレスバーに短縮URLの重要な、しかし、アドレスバーに、URLがその後リダイレクトし、後に長いURLに戻って変更されるとき、それは動作します:私はルールを試してみましたhttp://10.20.109.99:10034/a/b/c/d/FAQ.htmlのような他のメニューリンクのURLをクリックすると、長いURLがアドレスバーに表示されます。

私は(同じDフォルダ内の)URLアドレスにキーのような何かを行うか、他のメニューのURLをクリックして、これまで、アドレスバーのURLが常に表示されたときに、私はアーカイブしたい事がある代わりに、1 http://10.20.109.99:10034/d/[the_pages].htmlを短縮長いURLに戻る

ありがとうございました。

+2

'[R]'手段は、リダイレクト。 'R'を失い、' [L] 'を使うだけです – Rob

答えて

0

RewriteRuleの使用は間違っています。

パターンに従って一致させるパターンは、スキームとホスト名の後の「パス」であるURLパスです。

また、ターゲットは同じ仮想ホストにあり、URLを「変更」したくないので、リダイレクトはRobと同じようにRフラグのように外部ではなく内部で行われます。

そこで、基本的に内部あなたは、これが(仮想ホストのコンテキストで定義された)のでしょう言及した宛先に/d/index.htmlをリダイレクトする:

RewriteRule ^/d/index.html$ /a/b/c/d/index.html [L] 

そしてその他の内部リダイレクトに同じ方法を適用しますあなたは作りたい。

参照:
RewriteRule docs
Rewrite Flags
Context


関連する問題