0

私のウェブルートはexample.comです。webrootの下に、という名前の2つのサブディレクトリがsub1ありsub2ます。中sub1に私は以下を配置しました.htaccess

RewriteEngine On
RewriteCond %{REQUEST_URI} test\.me$ [NC]
#RewriteRule ^(.*)$ http://example.com/sub2/foo.html [L]
RewriteRule ^(.*)$ /sub2/foo.html [L]

誰かがアクセスしようとしたときhttp://example.com/sub1/test.me、私は彼らにサービスを提供してほしいhttp://example.com/sub2/foo.html

上記.htaccessは機能しません。フルパスでRewriteRuleのコメントを解除し、Webルートからの相対パスでRewriteRuleをコメントアウトすると、ほぼ意図したとおりに機能します(右側のページが表示されますが、表示されるURLもから http://example.com/sub1/test.meに変更されますがhttp://example.com/sub2/foo.html、これは変更されません。欲しかった)。

サイトルートに相対的なパスが機能しないのに、フルパスがほとんど機能する理由を理解できません。

そして、私のアプローチが機能しない理由と、このタイプのリダイレクトを行うための「ベストプラクティス」が何であるかを誰かが説明できれば、私は感謝します。

4

1 に答える 1

1

私はそれを解決しました。

残念ながら、質問を作成したときに設定を単純化しすぎました。実際、「処女」環境では、オリジナル.htaccessは私が意図したとおりに動作します。

ただし、私がこれを使用している設定.htaccessは Drupal 7 であり、Drupal 7 は「クリーン URL」を使用するため、違いがあります。

私が見つけたのは、「クリーンな」URL への書き換えが機能しないことです。そのため、Drupal ノード #1 にリダイレクトする場合、次のルールは.htaccess機能しません。

RewriteRule ^(.*)$ /sub2/node/1

ただし、次のようになります。

RewriteRule ^(.*)$ /sub2/?q=node/1

クラックに関連するすべてを質問に入れなかったことをお詫びします。
この回答が、同じことで苦しんでいる人の助けになることを願っています。

于 2012-12-07T05:53:56.977 に答える