web-dev-qa-db-ja.com

htaccessの疑問符付きのリダイレクトリンク

リダイレクトする必要があります:

example.com/wiki/?t=1234 

example.com/vb/showthread.php?t=1234

番号「1234」は、番号の異なる数百ページです。

.htaccessを試してみましたが、機能しません。

RewriteCond %{QUERY_STRING} t=[0-9]
RewriteRule ^(.*)$ /vb/showthread.php?t=$1 [L]
2
Saadedin
RewriteCond %{QUERY_STRING} t=[0-9]
RewriteRule ^(.*)$ /vb/showthread.php?t=$1 [L]

これはmatchリクエストになりますが、意図したとおりにリダイレクトされません($1RewriteRulepatternでキャプチャされたグループへの後方参照です。クエリ文字列ではありません)。述べたように、これも内部書き換えであり、「リダイレクト」ではありません。

To redirect/wiki/?t=1234 to /vb/showthread.php?t=1234、ここで1234は変数である場合、代わりに次のようなことを行う必要があります。

RewriteCond %{QUERY_STRING} ^t=(\d+)
RewriteRule ^wiki/$ /vb/showthread.php?t=%1 [R=302,L]

これは、URLパス/wiki/と、t=で始まり1桁以上のクエリ文字列と一致します。数字は正規表現(\d+)によってキャプチャされます。

%1後方参照(%ではなく$に注意)は、前のCondPatternでキャプチャされたグループへの後方参照です。

これは302(一時的な)リダイレクトであることに注意してください。ただし、正常に機能していることが確実になるまで、これを変更しないでください。

1
MrWhite