0

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は、301を使用して、そのサブディレクトリのないURLに視覚的にリダイレクトする必要があります。たとえば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します...では、何が問題になっていますか?

ところで、サイトは外部でホストされており、apache構成にアクセスできないため、mod_rewriteを使用する必要があります。

ポインタをありがとう。

4

1 に答える 1

1

代わりに、 THE_REQUESTHTTPリクエスト行を調べてください。

RewriteCond %{THE_REQUEST} ^GET\ /net[/? ]
RewriteRule ^net($|/(.*)) /$2 [L,R=301]
于 2010-04-07T19:16:52.203 に答える