シナリオ:
多くの書き換えを処理している.htaccessファイルがあります(PHPでは可能/簡単になることを認識しています)
すべて
が正常/some/fake/dir/foobar
に機能し、内部で次のように書き直されました
/index.php?some=fake&dir=foobar
クエリ文字列を含むURLはすべて削除されました
そのため、宣言された条件に一致しないIPについては、「近日公開ページ」または「メンテナンス中ページ」を作成したかったのです。
私が試したことの例:
私はこのようなものと他のいくつかのバリエーションを試しました。
# IF not from DEV address
RewriteCond %{REMOTE_ADDR} !^123\.123\.123\.123$
# AND not for comingsoon page or other assets
RewriteCond %{THE_REQUEST} !\?comingsoon [OR]
RewriteCond %{REQUEST_URI} !^/comingsoon
# THEN send them to comingsoon page
RewriteRule ^ /comingsoon [R,L]
条件を満たすために、.htaccessファイルのすべての潜在的な領域でそれを試しました。
問題はリダイレクトループの取得にあるようです。apacheログには、/comingsoon
ページを要求してからルートディレクトリにリダイレクトすることが示されます/
。/foo/bar
の内部変換のためだと思い/?foo=bar
ます。/
しかし、「ゴースト」ページにリダイレクトされる場所を理解する方法がわかりません。/comingsoon
以下は.htaccessファイルのレイアウトです:(問題を理解する時間を節約するためにコードは省略されています)
Options -Indexes
RewriteEngine on
RewriteBase /
# Forced https (should not effect the problem)
[...]
# To externally redirect /dir/index.php to /dir/
[...]
# To externally redirect /dir/foo.php to /dir/foo
[...]
# To internally redirect /dir/foo to /dir/foo.php
[...]
# Prevent Rewrite on existing directories, files, and links
[...]
# Remove query string
[...]
# To internally rewrite directories as query string
[...]
# Custom error documents
解決するために完全な.htaccessが必要な場合はコメントしてください。ありがとう!
/編集:
私のスクリプトは既存のファイルの書き換えが要求されないようにするため、「実際の」ファイルで正常に動作するようになっていることに注意してください。これは私が探している解決策ではありません。私のメインインデックスファイルは、request_uriがクエリ文字列を介して何に書き換えられるかに応じて動的コンテンツを提供しています