it-swarm-ja.com

htaccess他のすべてのルールが失敗した場合にリダイレクトする方法は?

htaccessはいつも私の問題を与えてきました。私がそれを理解していると思うたびに、htaccessは私が理解したと思っていたものに反します。どんな助けでも大歓迎です。

私がhtaccessでやりたいのは、次のようなリダイレクトURIです。

www.example.com/get/something to  www.example.com/get.php/something
www.example.com/cape/something  to www.example.com/active.php/something

他のたくさんと一緒に。私はそれがうまく機能しているのですが、私が機能していないのは、これらのルールのいずれも満たされていない場合は、メインドメインにリダイレクトすることです。したがって、URIがwww.example.com/anythingThatIsNotDefined/anythingまたは単にwww.exampleになる場合.com/anythingThatIsNotDefinedリダイレクトしたいhttp://www.anotherexample.com

それは私が仕事に就けない最後の部分です。私の現在のhtaccessファイルは次のとおりです。

RewriteEngine On
RewriteRule ^get/(.*)$ /get.php/$1 [L]
RewriteRule ^skin/(.*)$ /active.php/$1 [L]
RewriteRule ^cape/(.*)$ /active.php/$1 [L]

他のドメインにリダイレクトするために取得またはスキンまたはケープ以外のものを取得するには、何を変更する必要がありますか?

Get、skin、cape以上のものを追加する必要がありますが、機能するようになったら、簡単に追加できるはずです。

事前のおかげで、これは本当に私を困惑させています。

(これが私がお詫びする正しいスタックサイトでない場合、それはこことオーバーフローの間で50/50のトスでした。それがどちらに属しているのかわかりませんでした。)

2
Ryan Sullivan

.htaccess順序を使用して、最初に何が起こるかを決定します(すべてのApache構成ファイルと同様)。あなたの場合、あなたは単にあなたの「特別な」書き換えルールのすべてを以下のようなキャッチオールルールの前に置く必要があります。

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ http://www.otherdomain.com/$1 [R=301,L]

このルールは基本的に、ハードリソース(ファイルまたはディレクトリ)として存在しないものについては、URI文字列を含めてリクエストを http://www.otherdomain.com にリダイレクトすることを示しています。これがフレンドリURLリダイレクトの後に発生すると仮定すると、それらはキャッチされません。

6
Garrett