2

私が欲しいもの:

/file_new.pdf を /file new.pdf に 301 リダイレクトするには ( file と new の間の %20 別名スペース)

私はそれを知っています:

  • このスレッドの解決策を使用して、mod_rewrite を使用する RewriteRule 301 に頼ることができます: URL にスペースを含む @ mod_rewrite
  • スペースを含まないようにファイルの名前を変更し、それらをダッシュ​​/アンダースコアに置き換えることができます

しかし、私は個人的にこれをどのように行うかについて興味があります。これが私がこれまでに持っているものです:

Redirect 301 /file_new.pdf http://sitename.com/file\ new.pdf

configtest を呼び出すと、conf ファイル パーサーがエラーをスローします。

Redirect は 2 つまたは 3 つの引数、オプションのステータス、リダイレクトするドキュメント、および宛先 URL を取ります。

編集: mod_rewrite メソッドも Redirect 301 メソッドも機能しているようです。おそらく、ファイルが実際にその場所に存在するために何らかの理由で適用されていないためです。

<VirtualHost *:80>
DocumentRoot /www/sitename_com
ServerName site.local
Options -MultiViews

RewriteEngine on
Redirect 301 /pdf/file_new.pdf http://site.local/pdf/file%20new.pdf
RewriteRule ^/pdf/file_new.pdf http://site.local/pdf/file\ new.pdf
RewriteLog "/www/rewrite.log"
</VirtualHost>

rewrite.log では、パターンをそれぞれの uri / http リクエストに一致させようとします。mod_alias/mod_rewrite に到達する前に、何かが制御されていると思います。

要約すると、ブラウザの file_new.pdf に直接移動し、301 ではありません。私はそれを確信してaliasおりrewrite、有効になっています。私のApacheのバージョンは2.2です。

4

1 に答える 1

5

これRedirectは実際には mod_rewrite ではなく mod_alias の一部です。%20 が機能してよかったです。引用符を使用して、スペースを含むパスがリダイレクト先の URL であり、2 つの個別の項目ではないことを apache に伝えることもできます。

Redirect 301 /pdf/file_new.pdf "http://site.local/pdf/file new.pdf"
于 2009-10-05T21:24:56.043 に答える