2

htaccess を使用して特定のサブディレクトリからリクエストをキャプチャし、そのディレクトリ自体をルート相対パス リクエストのルート ディレクトリとして使用することはできますか? たとえば、私が持っている場合...

http://www.example.com/subFIXED/subANY/restofpath

...ここで、subFIXED は常に同じディレクトリであり、subANY は subFIXED の直下のサブディレクトリであり、subANY の下の任意のファイルからのすべての href/src リクエストをリダイレクトして、subANY を「ルート」(サブドメインのようなもの) として使用する必要があります。 、実際には、ルート レベルのリクエストでこれをルート ディレクトリ レベルとして使用します。

http://www.example.com/subFIXED/subANY/

これの代わりに:

http://www.example.com/

htaccess ファイルを subFIXED に配置して、subANY の下にあるものからのすべての呼び出しを処理できると想定していますが、htaccess の書き換えや変数などに精通していないため、どの subANY ディレクトリをキャプチャするかわかりませんルート レベルのリクエストを作成し、そのキャプチャを使用して書き換えを行い、そのディレクトリがそこからのルート相対パス リクエストのルート レベルであると見なします。

ご協力いただきありがとうございます

4

1 に答える 1

2

うーん、.htaccess?非常に信頼性の低い HTTP_REFERER に依存する必要があります。

HTML に <base> 要素を追加して完了です。 http://www.w3schools.com/tags/tag_base.asp


編集: ルート ("/foo") からの相対も考慮する必要があるため、<base> で相対パスを修正した後:

.htaccess (サブパスの切り替えはほとんど不可能であり、HTTP_REFERER は非常に信頼性が低いため、非常に信頼性が低くなります。要するに、使用しないでください)

RewriteCond %{HTTP_REFERER} ^.*://[^/]+/subFIXED/([^/]+)/
RewriteCond %{REQUEST_URI}  !^/subFIXED
RewriteRule ^(.*)$ /subFIXED/%1/$1 [R=301,L,QSA] //drop the R=301 if POSTing, but url will not show the 'correct' one in that case

落とし穴:

  1. POSTing は厄介です (POST をリダイレクトして保持することはできないため、「通常どおり」着陸する必要があります。これにより、後続のリクエストで REFERER が役に立たない / false になります)
  2. リファラーが送信されないことが多い
  3. REFERER を送信する場合、他の「subAny」から他の「subAny」への切り替えは不可能です

より実行可能なソリューション:

  1. 「/」で始まるすべての参照 (href/src) にドット (.) を追加して、サーバー上のスクリプトを使用してすべての要求を後処理します。
  2. 前のものはクライアント側の JavaScript で実行できますが、js が無効になっている検索ボットとブラウザーのすべてのリンクが壊れてしまうため、これはお勧めできません。
  3. 実際のサブドメインを作成します。これは面倒です。

要するに、実際のサブドメインを作成する以外に望ましい解決策はありません。この「固定ルートパス」ソリューションが必要な、解決しようとしている正確な問題は何ですか? これほど手間がかからないものもあるかもしれません。

于 2010-06-05T21:44:21.977 に答える