2011-07-17 13 views
2

プロジェクトでGETリクエストを使用しています。私はmydomain.com/testにアクセスすれば、私のサーバサイドにmydomain.com/get.php?txt=testを要求します。index.phpのルールに影響を与えずに.htaccess RewriteRuleを作成する方法

はここで私のhtaccessファイルのRewriteRuleあり、それはOKに動作しますが、私はメインページに行けば、それが起動するので、それはだ問題は、私のindex.phpに影響を与えます:mydomain.com/get.php?txt=test要求及びませんがために、私のRewriteRuleのmydomain.com/index.phpを開きます。私はmydomain.com/1/testのようなパスに余分なサブレベルを作りたくない

Options +FollowSymLinks 
RewriteEngine On 
RewriteRule (.*)$ get.php?url=$1 [L] 

、それはルートの次のレベルにする必要があります。

助けてください。ありがとうございました!

答えて

2

最も一般的な方法は非既存のリソース(ファイル&フォルダ)を書き換えるだけに条件を追加することです:

Options +FollowSymLinks 
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule (.*) get.php?url=$1 [L] 

もう一つの可能​​なアプローチ(あなたの元の要求のために正常に動作しますました)は、/index.phpが要求されたときにそのようなルールを無視することです:

Options +FollowSymLinks 
RewriteEngine On 

RewriteCond %{REQUEST_URI} !^/index\.php 
RewriteRule (.*) get.php?url=$1 [L] 

アプローチ1はです。が推奨されており、かなり普遍的です。しかし.. あなたはget.phpを介してすべてのリソース(画像/スタイル/ javascripts/etc)を提供しています(私はあなたのアプリケーションが何を行い、どのように動作するかわかりません)。

+0

ありがとうございます。既存の資源を無視する素晴らしいアイデア!もう一度ありがとう! – Tim

0

書き換えルールの前に

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

を追加します。

+0

あなたの知識を共有してくれてありがとう、LAzyOneが書いたように、あなたのRewriteCondはうまくいくはずです。ありがとう。 – Tim

0

これは問題ありませんか?

Options +FollowSymLinks 
RewriteEngine On 
RewriteCond %{REQUEST_URI} !^/index\.php$ 
RewriteRule (.*)$ get.php?url=$1 [L] 
+0

ありがとう、LazyOneのアプローチでやりました。 – Tim

関連する問題