web-dev-qa-db-ja.com

1つ上のレベルにあるファイルへのHtaccessの書き換え

次のルールでサブドメインにhtaccessがあります。

RewriteEngine On
RewriteBase /
RewriteRule ^feed([0-9]+)$ ../image.php?id=$1 [L]

したがって、基本的には、サブドメインにあるフィードからメインドメイン(上の1つのディレクトリ)にあるimage.phpファイルにリクエストをリダイレクトしたいと思います。 ../の使用は、PHPのようには機能しないようです。

では、どうすれば親ディレクトリのファイルに書き換えることができますか?

2
Michael Samuel

その音によると、あなたはすでにサブドメインのドキュメントルートにいます。これはおそらくそれ自身の仮想ホスト(メインドメインのドキュメントルートから離れたサブディレクトリを指している)で定義されています。

残念ながら、.htaccessでmod_rewriteを使用して、ドキュメントルートの上/外を内部的に書き換えることはできません。 .htaccessでは、RewriteRulesubstitutionはURLパスのみを取り、ファイルシステムパスは取りません。ただし、サーバー構成でmod_rewriteを直接使用している場合は、これを行うことができます。サーバー構成では、ファイルシステムパスを置換として指定できます(絶対パスを明示的に含める必要があります。../image.phpのような相対パスは使用できません)。

または、.htaccessで、mod_proxyとmod_rewriteを使用して、サブドメインからメインドメインにリクエストをプロキシできる場合があります。ただし、これにはサーバー構成が必要な場合があります。例えば:

RewriteRule ^feed([0-9]+)$ http://maindomain.com/image.php?id=$1 [P]
2
MrWhite