Regex 为什么我的.htaccess重定向不起作用?

Regex 为什么我的.htaccess重定向不起作用?,regex,apache,.htaccess,mod-rewrite,rewrite,Regex,Apache,.htaccess,Mod Rewrite,Rewrite,我正在尝试重定向服务器中不再存在的旧PDF的传入请求。这是我在.htaccess中输入的内容,但它不起作用。它总是把我带到自定义404错误页面。我做错了什么 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} !^www\.mydomain\.com RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L] Rewri

我正在尝试重定向服务器中不再存在的旧PDF的传入请求。这是我在.htaccess中输入的内容,但它不起作用。它总是把我带到自定义404错误页面。我做错了什么

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^www\.mydomain\.com
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteRule . index.php [L]

RewriteRule ^files\/2002\/pdfs\/Home\%20Doc\.pdf$ "http\:\/\/mydomain\.com\/docs\/" [R=301,L]

重新启动发动机
重写基/
重写cond%{HTTP_HOST}^www\.mydomain\.com
重写规则^(.*)$http://www.mydomain.com/$1[R=301,L]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}/index.html-F
重写cond%{REQUEST_FILENAME}/index.php-F
重写规则。index.php[L]
重写规则^files\/2002\/pdfs\/Home\%20Doc\.pdf$“http\:\/\/mydomain\.com\/docs\/”[R=301,L]


此处
files/2002/pdfs/Home Doc.pdf
是网站中不再存在的旧文件。

重新排列规则,在静默重写之前保持301重定向:

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$ [NC]
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L,NE]

RewriteRule "^files/2002/pdfs/Home Doc\.pdf$" http://mydomain.com/docs/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}/index.html !-f
RewriteCond %{REQUEST_FILENAME}/index.php !-f
RewriteRule . index.php [L]

谢谢pdf文件
%20
中的空格似乎有问题。我试过使用没有图像的文件,但效果很好。在.htaccess中有没有一种方法可以用不同的方式表示空格?我试过这个方法,它似乎对我有用:
RewriteRule“files/2002/pdfs/Home Doc.pdf”docs/[R=301,L]
不过我还没有试过你的。谢谢你的帮助!是的,两个版本都可以很好地工作,我有你的版本的更新答案,但转义点。