1

404エラーリンクとそれぞれの301リダイレクトの列があるスプレッドシートがあります。例)

404 error page                    301 redirect      

http://www.abc.com/1.php          http://www.abc/com/2.php
..............                    ............

スプレッドシートには約1000以上のリンクがあります。

バルク301リダイレクトを処理できるapacheconfigまたはhtaccessの方法はありますか?

4

3 に答える 3

2

Bulk 設定の最良の方法は、mod-rewriteのRewriteMapディレクティブです。これは .htaccess ファイルでは機能しないことに注意してください。実際の apache 構成ファイルでそれを編集する必要があります (良いニュースは、.htaccess 動的構成よりも非常に高速になることです)。

txt:まずキーワードを確認してください。

そのようなものかもしれません:

RewriteMap myredirects txt:/path/to/my/txt/map.txt 
RewriteCond ${myredirects:$1} ^/.+
RewriteRule ^(.+)$ %0 [R=302]

うまく機能するようになったら、302 を 301 に変換し、dbm:キーワード (およびhttxt2dbmコマンドですが、リンクされたドキュメントで説明されています) を使用して txt ファイルをより高速なハッシュマップに変換します。

于 2011-11-16T19:29:32.513 に答える
0

RewriteMap は、regilero が述べているように、実際に進むべき道です。しかし、彼のコードがどのように機能するのか理解できず、機能させることもできませんでした。1 つの問題は、それ以上の書き換えがないと仮定していることです ([L] がありません)。

Apache 構成 (.htaccess では機能しません):

RewriteMap myredirects txt:/var/www/mysite/redirects.txt

.htaccess (Apache 構成でも機能します):

RewriteCond ${myredirects:%{REQUEST_URI}} .+
RewriteRule ^ ${myredirects:%{REQUEST_URI}} [L,R=301]

redirects.txt 内 (注: スラッシュはオプションではありません)

/old /new

dbm への切り替えに余分な手間をかける価値があるかどうかはわかりません。http://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#rewritemapに記載されているように、ルックアップはとにかくメモリにキャッシュされます。

プレーン テキストおよび DBM 形式のファイルの場合、検索されたキーは、mapfile の mtime が変更されるか、サーバーが再起動されるまで、コア内にキャッシュされます。

于 2013-06-22T15:38:58.940 に答える