2009-08-12 12 views
5

私のKohanaプロジェクトをGodaddyサーバーにアップロードした後、私の標準の.htaccessファイルがクリーンなURLを提供するのに十分ではなかったことに気付きました。いくつかのガイダンスの後、私は次のようなルールになってしまった:

RewriteRule .* index.php?kohana_uri=$0 [PT,L] 

は、これが再び働い私の素敵な-URLを得たが、今日はそれもGETスタイルを使用して、私の内部検索エンジンを、破壊することができることを見つけます変数:

/search?terms=php 

値はスクリプトによって見つかりません。彼らは、RewriteRuleを使用しているGodaddyサーバではなく、変更されたRewriteRuleを持っていない私の開発サーバ上にあります。

ルールが$ _GETから読み取るスクリプトの能力を壊していると仮定していますが、もしあれば、これをどのように修正できますか?

答えて

8

たぶんこのように、あなたのrewriterulesでQSAを使用して:

RewriteRule .* index.php?kohana_uri=$0 [PT,QSA,L] 

manual of mod_rewrite(引用)を参照してください:

'qsappend | QSA'(クエリ文字列APPEND)

このフラグを置換文字列の というクエリ文字列部分を、 の代わりに の既存の文字列に追加するように、書き換えエンジンに強制します それ。書き換え ルールを使用して、クエリ文字列にさらに データを追加する場合に使用します。

は(あなたの特定のケースでテストされていませんが、私はこのような問題のいくつかの種類のために、このいくつかの時間前に使用していた覚えている)役立つかもしれないあなたが標準的な慣行とクエリ文字列なしを使用したい場合は

+0

これはうまくいきました。私は受け入れる前に待って、他の人たちに参加させてもらいます(私は、.htaccessについてほとんど知っていないので、これが最良の解決策であるかどうかは分かりません)。ありがとうございました! – Sampson

+0

問題はありません:-)大歓迎です! –

1

私はあなたが追加できると思います:RewriteCond $1 !^(search)、またはそれに類するものです。

0

あなたはちょうどこれらの手順に従う必要があり、それはちょうどローカルホストのように動作し、あなたは書き換えルールを変更する必要はありません。あなたのGoDaddyはアカウントのファイルマネージャへ

ゴー - > webrootディレクトリ - >それは次の行を存在と場所いない場合php5.iniを作成します。cgi.fix_pathinfo = 1

今すぐあなたのWebプロセスを再起動する必要があります:

1.)アカウントマネージャにログインします。 2.)Web Hostingをクリックします。 3.)使用するホスティングアカウントの横にある[起動]をクリックします。 4.統計情報&モニタセクションで、システムプロセスをクリックします。 5.左側のリストで、表示するプロセスをクリックするか、すべてのプロセスをクリックしてすべてのプロセスを一度に表示します。 6.プロセスを終了するには、ツールバーの対応する終了ボタンをクリックします。

これで、URI_PROTOCOLをAutoとして使用できるようになりました。