2011-08-13 2 views
1

これを含む他のトピックを参照しました:Mod_rewrite invisibly: works when target is a file, not when it's a directory、しかし、私は私の問題の解決策を見つけることができません。URL書き換え不可 - アドレスバーに書き換えられたURLが表示されないようにするにはどうすればよいですか?

私は、次の書き換えルールがあります。それは何

RewriteRule ^([a-zA-Z0-9_-]+)$ ./index.php?s=$1 [L,NC] 
RewriteRule ^([a-zA-Z0-9_-]+)/$ ./index.php?s=$1 [L,NC] 

http://myaddress/index.php?s=parameterhttp://myaddress/parameterようなものを書いて、ブラウザのアドレスバーにこの新しい書き換えられたアドレスを示すことです。

書き換えられたURLをアドレスバーに表示せずに書き換えを行うにはどうすればよいですか?


編集

これは私の.htaccessファイルの内容です:

DirectoryIndex index.php 

RewriteEngine On 

RewriteRule ^([a-z0-9_\-]+)/?$ index.php?s=$1 [L,NC,QSA] 
RewriteRule ^([a-zA-Z0-9_-]+)\/?([a-zA-Z0-9_-]+)\/?$ index.php?u=$1&s=$2 [L,NC] 
RewriteRule ^([a-zA-Z0-9_-]+)\/?([a-zA-Z0-9_-]+)\/?([a-zA-Z0-9_-]+)\/?$ index.php?u1=$1&u2=$2&s=$3 [L,NC] 

答えて

1

1.その2つのルールの必要はありません。同じ仕事をしてください(唯一の違いは後続のスラッシュの存在です)。

2. フラグがある場合はa-zA-Zのパターンは必要ありません。a-zで十分です。上記のすべてを考慮すると./

なし

3.てみルールはルールになるだろう言及:

RewriteRule ^([a-z0-9_\-]+)/?$ index.php?s=$1 [L,NC,QSA] 

P.S. 元のクエリ文字列(存在する場合)を保持するためにQSAフラグも追加しました。

ルールはテストされており正常に動作しています。それでもあなたのために動作しない場合は、ALLの書き換えルールを投稿してください。

+0

ありがとうございますが、それでも動作しません、私は私が持っている書き換えルールを投稿するために私の質問を編集しました。 – AntonioJunior

+0

@AntonioJunior申し訳ありませんが、これらのルールがリダイレクト(ブラウザのURL変更)を行う方法はありません。サーバ設定を編集してデバッグ( 'RewriteLogLevel 9')を再起動し、Apacheを再起動し、問題のあるURLを試して、書き換えログを確認すれば、何が起きているのかを知ることができます。たぶんあなたのリダイレクトするPHPコードです - 空のPHPファイルを作成し、書き換えルールでindex.phpの代わりに使用することを確認することです。現代のブラウザではキャッシュのリダイレクトが行われるため、**ブラウザキャッシュをクリアするか、別のブラウザを試すことをおすすめします。 – LazyOne

+0

こんにちは、LazyOne、ありがとう!実際には、PHPコードでリダイレクトを行っていましたが、あなたがそれを指摘するまでそれを覚えていませんでした。説明に忍耐をありがとう。 – AntonioJunior

1

これは動作するはずです:

RewriteEngine On 

RewriteRule ^([-a-zA-Z0-9_]+)$ index.php?s=$1 [L] 
RewriteRule ^/?$ index.php [L] 
+0

まだ動作しません。アドレスバーに書き換えられたURLを表示し続けます。私は書き直し規則を示すために投稿を編集しました。 – AntonioJunior

+0

ありがとう、マット、私は最初の答えを掲示することにしました。 – AntonioJunior

関連する問題