2012-01-13 4 views
0

私は奇妙な問題があります。私はlocalhost上で私のサイトを開発し、その後私はそれをサーバー側に配布します。ほとんどの場合、これは期待どおりに動作していますが、何か不思議なことに気付き、問題の内容を把握できません。

サーバー上ではすべてRewriteRuleがリダイレクトされますが、予期しないクエリはありません。このような何かは、サーバー上のローカルホスト上で正常に動作していないが: オン

RewriteEngine .... ....

RewriteRule ..... 

EDIT:申し訳ありませんが、セキュリティ上の理由のためにエントリを変更します!

.... ....

誰もが何が起こっているか知っていますか?何かお見逃しですか?なぜクエリは通過しませんか?それはサーバー構成ですか?それについてインターネット上で何も見つけることができません。

ご意見ありがとうございます。

編集:以下の解決策、2番目のコメント。最初にApacheが扱うものと何か関係があります。

答えて

0

これらはデバッグがほとんど不可能です。 RewriteLogディレクティブはしかし.htaccessから使用することはできません

RewriteLog /tmp/rewritelog.txt 
RewriteLogLevel 2 

:しかし、mod_rewriteのは、あなたがこれを調査するために設定する必要があります一つの特徴を提供しています。 vhostまたはメインサーバーの設定で宣言する必要があります。レベル2が依然として不十分な場合は、3を試してください。

それ以外の場合は、さまざまなディレクトリレベルがルールに一致するように思われるので、RewriteBaseを試してみることをおすすめします。可能であれば、サブディレクトリ(streambutler/)でルールを繰り返してください。 apache mod_rewriteは独特のものであり、親ディレクトリでそれらを無視することがあります。

+0

ハイ、お返事ありがとう、私はそれを感謝します。しかし、私はルール自体に何か問題があるとは思わないが、これらのルールを処理する方法はある。しかし、それはどうして違うのですか?私はリライトベースを試してみる。ありがとう – Codebeat

+0

Allright、リライトベースを設定して、大丈夫と思われる。しかし問題は、streambutler /という名前のディレクトリがあり、サーバ上のapache設定が最初のディレクトリとファイルをチェックしてからルールを書き直すことでした。そのため、既存のディレクトリと混同していました。ローカルサーバーはまずルールを確認し、次にディレクトリとファイルをチェックします。 Grrr !!!!!書き換えルールの名前をたとえば:streambutler/to butler /に変更してください。正しく動作しています。この頭痛があり、愚かです。ルックアップの動作はどこで変更できますか? – Codebeat

+0

これについて聞いたことがありません。 Apacheのバージョンとの違いは最高です。 – mario

1

@Erwinus、あなたが議論する "Perdir"機能はApacheでは標準ですが、よく理解されていません。 Apacheは、スクリプトファイル名のパスにある既存のすべてのファイル(.htaccess)を調べ、開いて読み込みます。 (ほとんど選択されていないRewriteOptions inherit追跡を無視して)、最も深い.htaccessというファイルを使用して、見つけたファイルはRewriteEngine Onです。

私はそのIMHOの親ディレクトリのルールを子供のディレクトリセットを取るルールを書き直すことはほとんど不可能です - Apacheのデフォルトのアクションは親を無視することです。 this blog articleで詳しく説明します。

+1

+1うわー、非常に有益。小さな回答を追加してhttp://serverfault.com/questions/214512/everything-you-ever-wanted-to-know-about-mod-rewrite-rules-but-were-afraid-toにあなたのリンクを投稿してください。 - 同様に? – mario

+0

@mario、申し訳ありませんが、私はエッセイを書くことになりました。私がそこに言ったように、私はmod_rewriteがどのように動作するのかを知るための個人的なプロジェクトを作りましたが、まだ少しは進んでいます。私はこれを、stackoverflow上のQについて考えて拾ったニュアンスのいくつかでこれを再加工したいと思います。 mod_rewriteを.htaccessプロセスで使用することは、rootの設定とは非常に異なり、独自の処理をほとんど必要としていることを強調したいと思います。 – TerryE

+0

クール。どうもありがとう!これはServerfaultの参考回答の一種でもありますので、より専門知識があればいいほどです。 PerDirは私が先週自分自身を見つけたのです。 PHPベースのWebサーバでは、mod_rewriteの再実装を書いたことがありますが、それほど多くの本質的な詳細はありませんでした。 – mario