0

一部のサイトを書き換える必要があります。サイトに 1 つ以上の変数がある場合、サイトを書き直す必要があります。

mysite.com/site.php?id=5 or  
mysite.com/site.php?id=5&other_variable=233 or  
mysite.com/site.php?id=5&any_stuff_here(numbers-letters-spacial_chars)

htaccess ルールをいくつか試しましたが、うまくいきません。

実際、私のルールは次のようになります。

RewriteCond %{QUERY_STRING} ^id=5$ [or]
RewriteCond %{QUERY_STRING} ^id=5$ 
RewriteRule ^site\.php$ http://mysite.com/folder/5_some_txt.html? [L,R=301]

最初の条件は 1 つの変数だけで正常に機能し、2 番目の条件は最初の条件と同じになりました (URL の残りの変数を処理するためにここに何かを配置しようとしています)。どうにかして変更する必要があると思います。あるいは、私がやろうとしていることを達成するためのより良い方法があるかもしれません。

誰でもこれで私を助けることができますか?

編集:同じhtaccessファイルに次のようなルールもあります:

RewriteRule ^site/([0-9]+)_(.*).html$ site.php?id=$1&name=$2 [L,NC,NS]
4

1 に答える 1

1

これを整理するために、\b(ワード ブレーク) メタ文字を使用できます。

RewriteCond %{QUERY_STRING} ^id=5\b
RewriteCond %{QUERY_STRING} !name 
RewriteRule ^site\.php$     http://mysite.com/folder/5_some_txt.html?   [L,R=301]

ユオがname除外されている理由がわかりません。確かにここでもっときつくする必要がありますか?たとえば!\bname=、クエリに name パラメーターが含まれている場合、リダイレクトが防止されます。

コメントの例を挙げると、私は次のようにします。

RewriteCond %{QUERY_STRING} !\b(name|par2|bpar3)=

これにより、GET パラメータの 1namepar2またはpar3. アイデアを得ますか?Apache は内部で PCRE 正規表現エンジンを使用しているため、任意の PCRE チュートリアルまたはオンライン ヘルパーを使用して支援できます。.htaccess 書き換えルールをデバッグするためのヒントに、Web サイトに追加できる小さなチェッカーも含めました。

于 2012-08-21T08:56:55.643 に答える