0

さて、私は再び立ち往生しています。2 日間の読書と再び、いくつかの近い解決策を見つけましたが、何も適合せず、私の実験はすべて失敗しました。

これは私の質問の続きです: here at stackoverflow

以下の 4 つのルールは、受信リンクを受け取ります。

  http://somedomain.com/getme.pl?dothis=display&partnum=1234567

そしてそれを列福します。また、ユーザーはアドレス バーで適切なバージョンを使用できます。

http://somedomain.com/1234567

これが私の作業規則です。

RewriteRule ^([\s]*)$ /getme.pl [L] ## in case there is a space or nothing.
RewriteRule ^([0-9]*)$ /getme.pl?dothis=display&partnum=$1&rewrite [L]
RewriteCond %{QUERY_STRING} partnum=([0-9]*)$
RewriteRule (.*) /%1? [L,R=301]

うまく機能しますが、サイトへの古いリンクがいくつかあることを発見しました。

http://somedomain.com/oldversion.php?id=123456789

http://somedomain.com/oldversion.php?r=86this&id=123456789

id=[0-9] を取得して、作業ルールに統合したいと思います。ルールは、上記の 2 番目と 3 番目のルールの間に挿入されると思います。

私は次のようなさまざまな試み(約100!)を試みました:

RewriteRule ^(oldversion\.php)?([a-z]{1})=([a-z0-9]*)&([a-z]{2})=([0-9]*)$ /$4? [L]

RewriteRule ^(oldversion\.php)?([a-z]{2})=([0-9]*)$ /$3? [L]

ご覧のとおり、2 日間の読書で、私には何も沈み込んでいません。すでに持っている作業ルールのバリエーションもいくつか試しましたが、役に立ちませんでした。

古い .php URL から 123456789 をどうにか取り出して、既存のルールに貼り付けることはできませんか?

あなたの助けと私のレベルの共同説明に感謝します.私は理解できるかもしれません...

4

1 に答える 1

0

これを .htaccess ファイルの最後に追加します。

RewriteCond %{QUERY_STRING} id=([^&]+)(&|$) [NC]
RewriteRule ^oldversion\.php$ /%1? [L,R=301,NC,NE]

URI の/oldversion.php?r=86this&id=123456789場合、内部的にリダイレクトされます/123456789

RewriteRule は URI と一致するだけで、QUERY_STRING とは一致しないことに注意してください。

于 2011-05-01T04:10:54.927 に答える