2012-03-26 3 views
0

複数の.htaccessファイルの使用に関する質問があります。これについては、stackoverflowの別の場所を参照してもわかりませんでしたので、皆さんが助けてくれることを願っています。2つのhtaccessファイル

私は現在、単純なURL書き換えを行い、私のサイトのルートに1つの.htaccessファイルを、持っている:私は現在、このサイトの開発の第二段階に働いている、と私は」

Options -MultiViews 
# CheckSpelling off 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$ index.php?url=$1 [L] 
ErrorDocument 404 /index.php 

をサブフォルダ内にレプリカを作成しました(例:www.abcdef.com/new/)。問題は、現時点では、このレプリカサイトのリンクをクリックすると、ルート/オリジナルのページにリダイレクトされますが、新しい/フォルダ内の同等のページに移動するようにします。だから私の質問がある

Options -MultiViews 
# CheckSpelling off 
RewriteEngine On 
RewriteBase /new/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.+)$ /new/index.php?url=$1 [L] 
ErrorDocument 404 /index.php 

:それはこのようなサブフォルダ内の別の.htaccessファイルを持つことが許されているしかし私は、任意の顕著な効果を持っていないこの新しい/フォルダ内の別の.htaccessファイルを、入れています?もしそうなら、なぜ上記の行は機能していませんか?

ありがとうございました!

G

+0

あなたは多くの人を持つことができます。htaccessのレベルは必要に応じて変更できますが、ディレクトリツリーの深さの順に処理されます。高い.htaccessが低い.htaccessに達する前に他の場所にリダイレクトすると、下位の.htaccessはロード/解析/実行されません。 –

答えて

0

は、あなたは、私はそれが 同等に行きたいのに対し、私は、それは根、元のページに私をリダイレクトし、このレプリカサイト上 をリンクをクリックした場合

トラブルは、現時点では、と言います新しい/フォルダ内のページ。

あなたのページには絶対的なリンクを使用していても、相対的なリンクを使用していないことはありますか?たとえば、リンクが"/sample"のように見える場合、メインサイトではhttp://.../sampleにリンクし、リンクが"/new/"のページ内にある場合は同じです。 "sample"だけを使用する場合は、ページのURLに応じてhttp://..../sampleまたはhttp://...../new/sampleと解決されます。

+0

ありがとうございます。絶対リンク、つまり/ sampleを使用しています。何故なら、元のサイトには何百ものリンクがあるので、私はそれらを変更できないということです。サブフォルダに移動するための書き換え方法があるかどうか知っていますか? – GluePear

+0

私はこれに迅速な解決策はないと思います。通常は「/」で始めるべきではありません。ファイル内で ''/'の検索を行うことはできますか?おそらく、この検索はあなたの"誤った根拠のある "すべてのフレーズを見つけるでしょうか? – CyberDude

+0

大丈夫です。それらをページに書き込んで初期の "/"を取り除いていますが、これらはまだルートに書き直されています!私はそれが私の問題に対する答えだったかもしれないと思った... – GluePear

0

サブディレクトリにある第二のhtaccessファイルを持つことは問題ではありませんし、私の知る限り、あなたの二人は大丈夫に見えます。

サイト内のリンクが正しいですか? (例:/new/foo/fooだけではありません)?

+0

いいえ、リンクは/ fooのみであり、/ new/fooではありません。私は既存のリンク(何百もある)を保存し、それらをローカルフォルダ(new /)にリダイレクトすることができることを望んでいました。 – GluePear

+0

これは、HTMLコンテンツを書き直すことを含みます。これは 'mod_rewrite'では行いません。あなたは参照元フィールドをチェックすることを含むいくつかのひどい、ひどい魔法をすることができます...しかし、それは本当に誰かがリンクをペーストするときに壊れるので、最後の手段になるでしょう。 –

+0

David、あなたの助けてくれてありがとう、あなたとcyberdudeは正しかった、そして今、私はそれが働いている絶対的なリンクを微調整しました。乾杯。 – GluePear

2

複数の.htaccessファイルを作成することは可能です。システムは、あなたが望むように動作するように設計されています。

RewriteBaseexplicitly sets the base URL-path (not filesystem directory path!) for per-directory rewrites)と設定しています。

あなたの要求が/new/new/index.phpに書き換えられ、ファイルシステムに存在しない可能性があります(したがって、あなたのRewriteCondを満たしていない)パスとディレクトリが/index.php 404にリダイレクトされているようです。あなたが書き換え通話はこれに行くのを見た場合、それは確かにあなたのRewriteBaseかもしれません

ErrorDocument 404 /new/index.php

:試験として

は、多分にErrorDocumentを変更してみてください。

+0

彼らは404に行くつもりはありません - 彼らは正しいページに行くが、元のサイトで、新しい/のコピーではありません。これはCyber​​Dudeが以下に述べるように、絶対的なリンクを使用しているからかもしれません。お返事をありがとうございます。 – GluePear

関連する問題