3

.htaccess ファイルでワイルドカード リダイレクトを行うにはどうすればよいですか?

以下を使用してみましたが、*何らかの理由で機能しません。

redirect 301 /threads/*.343/ http://myotherdomain.com/threads/*.343/

mod_rewrite を使用することはできません。これらのリダイレクトを 7000 回行う必要があるためです。どうやら、それらの約半分を試したところ、サーバーが 500 の設定ミス エラーをスローしたようです。

したがって、前述のコードの 7000 行を記述することは、どういうわけかあまり集中的ではないようです。

とにかく、そのようなコードでワイルドカードを表現する方法を教えてください。

4

2 に答える 2

3

mod_alias を使用すると、RedirectMatch代わりに次を使用できます。

RedirectMatch permanent ^/threads/[^/]+\.343/$ http://myotherdomain.com$0

/threads/*.343/これは、*以外の任意の文字である に一致するすべての URL に一致します/

于 2013-03-22T20:59:52.710 に答える
1

7000の個別の書き換えルールは必要ありません。RewriteMapを使用するだけです。

1-最初に、次のように2列に7000個の選択されたIDすべてを含むテキストファイルを作成します。

343 343
349 349
518 518

httpd.cond2-次に、次のようにRewriteMapを定義します。

RewriteMap idmap txt:/path/to/file/map.txt

3-次に、mod_rewriteと.htaccessを有効にしてhttpd.conf、次のコードをディレクトリの.htaccess下に配置します。DOCUMENT_ROOT

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^threads/(.*)$ http://myotherdomain.com/threads/${idmap:$1} [L,NC,R=301]
于 2013-03-22T20:53:18.013 に答える