私は最近drupalに変換した静的なHTML Webサイトを持っていました。私はウェブマスターツールとDrupalレポートで自分のサイト404エラーを監視しており、Googleが奇妙なURLを索引付けしていることに気づいた。私の推測では、古い静的なHTMLサイトから不適切に作成された相対的なリンクからのものです。ここで2ピリオドの奇妙なURLをリダイレクト
は一例です: www.example.com/items../item-page.html
実際のページは次のとおりです。 www.example.com/items/item-page.html
新しいdrupalサイトには.html拡張子もありません。私はURLリダイレクトとパス自動モジュールを使用しており、古いURLのすべてをリダイレクトして、新しいURL構造に301'dすることを確認しています(例:www.example.com/items/item-page.htmlは301になります)。 www.example.com/items/item-pageに)。
サーバーにアクセスできるため、.htaccessの代わりにApacheのhttpd.confファイルでリダイレクトを行っています。私はに../リダイレクトするために、次のコードを試してみました/私は運を持っていないです:
RewriteRule ^\.\./(.*) /$1 [R=301,NC,L]
私は../その中でURLに移動したときにこのルールは何もしません。 ../と一致し、任意のURLから削除することができる再書き込みがありますか?
注:だから私はその私のサーバー構成を考えていない
RewriteRule ^items/pdf/(.*)$ /sites/default/files/documents/items/$1 [R=301,NC,L]
:私は正常に動作しているapacheのhttpd.confの他のリダイレクト...などがあります。
EDIT: 上記の書き換えルールは、pdfディレクトリの書き換えルールがURLの..であっても機能することに気付きました。例: http://www.example.com/items../pdf/somedocument.pdf へのリダイレクト http://www.example.com/sites/default/files/documents/items/somedocument.pdf リライトルールでは..が完全に無視されているため、何もできません。誰もそれを回避する方法を知っていますか?
キャレットを削除して前方スラッシュをエスケープしようとしました(キャレットがまだその位置にあるままスラッシュをエスケープしようとしましたが)、それでも私には404が与えられ、リダイレクトされません。 –
404(Apacheのエラーログ)になるグループ1の値が見えますか?上記と同じように、あなたの現実世界のルールの$ 1から完全なパスを省略しましたか?例えば/ sites/default/files/documents/items/$ 1の代わりに$ 1? – Xorandnotor
これはerror.logにエラーはありません。 Access.logには、 192.168.1.119 - - [09/Aug/2016:09:37:22 -0400] "GET /items/item-page HTTP/1.1" 404 67516 が表示されます。完全なパスを省略することを意味します。明確にするために、私がリストした2番目の書き換えルールは、自分のサーバー上で意図した通りに他のリダイレクトが働いていることを示しています。私が働いているのは、古いファイル構造のpdfsをpdfsを保存しているdrupalの新しいファイル構造にリダイレクトすることです。注:私は自分のローカル開発サーバー上でこれらのリダイレクトをテストしていますので、IPアドレスがローカルIPである理由がわかります。 –