リダイレクトしようとしています
に
「/subdir」がユーザーから隠されています。少なくとも彼の URL バーでは。
私の初歩的な知識に基づいて私が考え出したこと:
RewriteEngine on
RewriteRule ^(/(.*))?$ http://www.domain.com/subdir/$1 [P,L]
リダイレクトに関しては機能していますが、クローキングではありません。任意のヒント?
リダイレクトしようとしています
に
「/subdir」がユーザーから隠されています。少なくとも彼の URL バーでは。
私の初歩的な知識に基づいて私が考え出したこと:
RewriteEngine on
RewriteRule ^(/(.*))?$ http://www.domain.com/subdir/$1 [P,L]
リダイレクトに関しては機能していますが、クローキングではありません。任意のヒント?
まず、公式の mod_rewrite ドキュメントによると、置換部分が絶対 URL である場合、外部リダイレクトが発生する可能性があります (ユーザーのブラウザーで URL が変更される原因となります。ただし、mod_rewrite は、その絶対 URL が要求と一致するかどうかを確認し、その部分を削除する必要があります)。アウトしましたが、バージョン 2.2 を確認したところ、リダイレクトが発生しました)。
したがって、1 つのアイデアは、次のような相対 URL を使用することです。/subdir/$1
これは良さそうに見えますが、まったく機能しないため、問題は解決しません。
代わりに、次のようなものを常に内部的に追加することをお勧めしsubdir/
ます。
RewriteRule ^subdir/.* - [PT]
RewriteRule (.*) /subdir/$1
簡単な説明:
/
はパターンに含まれていないため、次のパターンになります。
http://www.domain.com/
-->''
http://www.domain.com/dir1/file1.html
-->dir1/file1.html
subdir/
は [PT] を通過しますsubdir/
入力されたものの前にこの 2 つのルールは常にsubdir/
内部的に URL に追加されることに注意してください (ユーザーには表示されません)。リクエストのその部分をルートディレクトリに追加するだけの場合は、もちろんルールを変更する必要があります-質問のユースケースを明確にするためのヘルプを得るために。
mod_rewrite をより頻繁に使用する予定がある場合は、お使いの Apache サーバー バージョン (あなたの場合は 2.0 または 2.2 だと思います)のmod_rewrite ドキュメントを読むことを強くお勧めします。
mod_rewrite と .htaccess を有効にしてからhttpd.conf
、このコードをディレクトリの.htaccess
下に配置します。DOCUMENT_ROOT
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteRule (?!^subdir/)^(.*)$ /subdir/$1 [L,NC]