サブディレクトリにサブディレクトリの外にリダイレクトします
-
23-09-2019 - |
質問
私は私が把握することはできませんmod_rewriteをリダイレクト問題があります。
特定のドメインからのすべての要求は「静かに」指定されたサブディレクトリに書き換えられます。例えばwww.mydomain.net/hello.html
は/net/hello.html
内のファイルを検索します。 (私のホスティングルートに配置された)次の.htaccess のは完全にこれを達成します:
RewriteEngine on
RewriteBase /
RewriteCond %{ENV:REDIRECT_STATUS} 200 # <-- i will need this later. read to the end of the post.
RewriteRule .* - [L]
rewriteCond %{HTTP_HOST} ^www.mydomain.net$
rewriteCond %{REQUEST_URI} !^/net.*$
rewriteRule (.*) /net/$1 [L]
ただし、このディレクトリへの直接URLがしかし、目に見えてのそのサブディレクトリなしURL の301でリダイレクトする必要があります。例えばwww.mydomain.net/net/hello.html
は(静止www.mydomain.net/hello.html
内のファイルを検索より)/net/hello.html
にリダイレクトすべきです。 (/net
に配置された)、このための私の.htaccesファイル 残念ながら動作しません。
RewriteEngine on
RewriteBase /
RewriteCond %{HTTP_HOST} ^localhost$
RewriteRule ^(.*) /$1 [R=301,L]
私は何が間違っているのです...ルートの.htaccessファイル内RewriteCond %{ENV:REDIRECT_STATUS} 200
ブロックにもかかわらず、不定詞リダイレクトループを取得しますか?
ところで、サイトがexternalyホストされているので、私は、mod_rewriteのを使用していると私は、Apacheのコンフィグにアクセスできません。
任意のポインタのための多くのおかげます。
解決
の中に< HTTPリクエストラインを点検em>のTHE_REQUEST の代わりに:
RewriteCond %{THE_REQUEST} ^GET\ /net[/? ]
RewriteRule ^net($|/(.*)) /$2 [L,R=301]
所属していません StackOverflow