0

ここで他の mod_rewrite の質問をたくさん見て、それらのほとんどを試しましたが、どれもうまくいかないようです。これが私のやりたいことです。

  • http://abc.com/foobarすべてのリクエストを次のようにリダイレクトしますhttp://abc.com/

  • EXCEPTimagesと、したがって、またはjsのようなリクエストhttp://abc.com/images/foo/barhttp://abc.com/js/foo/bar

  • URL バーは同じままである必要があります。そのため、http://abc.com/foobar読み込みhttp://abc.com/中、URL は前者のように読み取られる必要があります

  • ポートはそのままにしておく必要があるため、http://abc.com:8080/foobarリダイレクトする必要がありますhttp://abc.com:8080

これは私の.htaccessファイルにあるものです

Options -Indexes
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(images/.*|js/.*)$
RewriteRule ^(.*)$ - [L]

状態は良好で、imagesファイルjsは正常にロードされています。最後の行で他のすべてがベース ドメインにリダイレクトされると思っていましたが、テストしても 404 エラーが発生します。

こんなルール使いたくない

RewriteRule ^(.*)$ http://abc.com/ [L]

ドメインは展開によって異なる可能性があるためです。

これがどのように機能するかについての理解が不十分だと思いますが、何か小さなものが欠けているだけです。誰かがこれを整理するのを手伝ってくれますか?

4

1 に答える 1

0

これは私が最終的に使用したものです

RewriteEngine On
RewriteCond %{REQUEST_URI} !^(/*|/index.html)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^[^\.]+$ index.html [L]

最後のルールはドット (.) を含まないファイルのみを検索するため、完全ではありません。したがって、 には適用されませんがhttp://abc.com/images/image.jpg、 には適用されhttp://abc.com/imagesます。

なぜこのようにしなければならないのか、よくわかりませんが、そのままで機能します。

于 2012-12-05T19:18:41.250 に答える