3

ようやくmod_rewriteの基本を理解できたと思いますが、まだ問題があります。

私の架空のサイトが(ほぼ)すべてのトラフィックをhome.htmlに転送し、SEOURLを解析するようにしたい。これは、/ home、/ home.html、/ index.html、/ something / somethingelse / gobledegookがすべてhome.htmlに移動することを意味します(GET変数を渡すことについて心配する必要はありません。ホームファイルは後でURL全体を解析します)。

現在の設定は次のとおりです。

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !/something/I/want/to/preserve.html
RewriteRule ^(.*)$ /home.html [L]

これは見事に機能します。リダイレクトとして機能することを除いて、ブラウザのURLは「/home.html」になります。home.htmlページをロードし、URLを同じに保つにはどうすればよいですか?

4

3 に答える 3

2

シンプルで、パススルー(PT)フラグを使用します。

RewriteRule ^(.*)$ /home.html [PT,L]
于 2013-02-06T14:38:06.783 に答える
1

Pにフラグを追加するだけでよいはずですRewriteRule。参照:Apachemod_rewriteマニュアル

    RewriteRule ^(.*)$ /home.html [PL]
于 2013-02-06T14:40:28.043 に答える
1

ルールを次のように置き換えてみてください。

RewriteCond %{HTTP_HOST} =www.staging.example.com
RewriteRule ^$ /abc-sp.html [PT,L]

「空白のURLパス」テストがルールで実行されるようになったため、元のRewriteCondは必要ないことに注意してください。

[PT]は、出力をファイルパスに変換するのではなく、「URL形式」のままにするようにmod_rewriteに指示します。したがって、書き換えられたURL要求は、mod_proxyによって取得され、バックエンドに送信されます。

それが機能しない場合は、[PT]の代わりに[P]フラグを使用し、バックエンドリソースのURLを指定します(例: "http:/ /192.168.0.2:8080/abc-sp.jsp")。[P]フラグは、既存のconfig-file mod_aliasコードと同じように、リバースプロキシスループットを生成します。

上記のコードは、.htaccess用、またはコンテナ内の構成ファイルで使用するためのものであることに注意してください。コンテナまたは.htaccessの外部で使用する場合は、RewriteRuleパターンに先頭にスラッシュを追加します。

私の答えがお役に立てば幸いです。:〜)

于 2013-02-06T14:35:06.720 に答える