我试过了,我真的......我放弃了.Wordpress和htaccess ......哦,痛苦。
旧的静态网站在根目录中都有pdf,doc,xls和zip文件。我已将所有文件作为媒体项加载,因此它们都存在于/ wp-content / uploads中。
我只是想抓住任何404这是一个.pdf文件并将其重定向到上传文件夹。应该很容易,但我显然没有做对。 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
我一直在努力:
因为我认为这是一项简单的工作,所以要采取许多规则。我不是htaccess大师,永远不会,我对那些人有很多的尊重!
感谢提前女士和男士的任何提示。
皮特
答案 0 :(得分:1)
如果您将部分更改为这样,是否有效?
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/wp-content/uploads/
RewriteRule ([^/]*\.(pdf|zip|xls))$ /wp-content/uploads/$1 [NC,L,R=301]
第一个条件检查请求是否针对不存在的文件,第二个是确保我们还没有重定向到uploads目录(如果它也不存在),并且规则匹配pdf,zip或xls。