2

私は試しました、私は本当に持っています...私は屈服します。Wordpressとhtaccess...ああ痛み。

古い静的サイトのルートには、pdf、doc、xls、zipファイルがすべて含まれています。すべてのファイルをメディアアイテムとしてロードしたので、それらはすべて/ wp-content/uploadsにあります。

.pdfファイルである404をキャッチして、アップロードフォルダーにリダイレクトしたいだけです。簡単なはずですが、私は明らかに正しいことをしていません。htaccessには非常に多くのフラグと設定があり、何かが衝突している、または私が「それを取得」していないだけです。

RewriteEngine On

# Catch incorrect case (must be a better way of doing this?)
RewriteCond %{REQUEST_FILENAME} !-f  
RewriteRule (.*)\.JPG$ $1.jpg [L,R=301] 

RewriteCond %{REQUEST_FILENAME} !-f  
RewriteRule (.*)\.PNG$ $1.png [L,R=301] 

RewriteCond %{REQUEST_FILENAME} !-f  
RewriteRule (.*)\.GIF$ $1.gif [L,R=301] 

# BEGIN WordPress
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress

# Start of my woes...what am I doing wrong?
RewriteCond %{REQUEST_FILENAME} .*\.pdf [NC]
#RewriteCond %{REQUEST_FILENAME} !\/wp-content\/uploads\/
RewriteRule ([^/]*\.pdf) /wp-content/uploads/$1 [NC,L,R=301] 

RewriteCond %{REQUEST_FILENAME} !-f  
RewriteRule ([^\/]*.zip) /wp-content/uploads/$1 [L,R=301] 

RewriteCond %{REQUEST_FILENAME} !-f  
RewriteRule ([^\/]*.xls) /wp-content/uploads/$1 [L,R=301] 

# For bonus points, is this the correct way to do this? Catch old reference to an old folder and move them on?
RedirectMatch 301 /Graphic\sFiles/(.*\.jpg) /wp-content/uploads/$1
RedirectMatch 301 /Graphic\sFiles/(.*\.png) /wp-content/uploads/$1
RedirectMatch 301 /Graphic\sFiles/(.*\.gif) /wp-content/uploads/$1

私は取り組んできました:

私が思っていたものを取り入れるための多くのルールは、1つの簡単な仕事でした。私はhtaccessの第一人者ではなく、決してそうなることはありません。

事前に女性と男性のポインタをありがとう。

ピート

4

1 に答える 1

1

セクションをこのように変更しても機能しますか?

RewriteCond %{REQUEST_FILENAME} !-f  
RewriteCond %{REQUEST_URI} !^/wp-content/uploads/
RewriteRule ([^/]*\.(pdf|zip|xls))$ /wp-content/uploads/$1 [NC,L,R=301] 

最初の条件は、リクエストが存在しないファイルに対するものであることを確認し、2番目の条件は、アップロードディレクトリにまだリダイレクトされていないことを確認することです(ファイルが存在しない場合)。ルールはどちらにも一致します。 pdf、zipまたはxls。

于 2012-08-02T11:35:55.710 に答える