Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 根文件夹中.pdf/.doc文件的.htaccess重定向_Php_Wordpress_.htaccess_Pdf_Redirect - Fatal编程技术网

Php 根文件夹中.pdf/.doc文件的.htaccess重定向

Php 根文件夹中.pdf/.doc文件的.htaccess重定向,php,wordpress,.htaccess,pdf,redirect,Php,Wordpress,.htaccess,Pdf,Redirect,我正在尝试创建一个类似于下面的重写规则 RewriteRule ^/?(.*+/.pdf)$ /site-content/import/uploads/$1 [L,R=301] 任何类似于 http://hostname/filename.pdf 应该重定向到 http://hostname/site-content/import/uploads/filename.pdf 但如果请求文件名位于子文件夹内,则不应重定向,也不应重定向.pdf或.doc文件以外的URL http://hostn

我正在尝试创建一个类似于下面的重写规则

RewriteRule ^/?(.*+/.pdf)$ /site-content/import/uploads/$1 [L,R=301]
任何类似于

http://hostname/filename.pdf
应该重定向到

http://hostname/site-content/import/uploads/filename.pdf
但如果请求文件名位于子文件夹内,则不应重定向,也不应重定向.pdf或.doc文件以外的URL

http://hostname/sub-page/filename.pdf
http://hostname/sub-page/sub/filename.pdf
http://hostname/sub-page
http://hostname/image.png
试试regex
^/[^/]+\(pdf | doc)$
。将首先匹配
/
,任何不是
/
且以
.pdf
.doc
结尾的字符


您可以使用以下选项:

RewriteRule ^([^/.]+\.pdf)$ /site-content/import/uploads/$1 [R,L]
或者这个:

RedirectMatch ^/([^/.]+\.pdf)$ /site-content/import/uploads/$1
在测试此重定向之前,请清除浏览器缓存

编辑:

上述示例仅重定向.pdf文件,若要重定向.pdf和.doc,可以使用以下规则:

RewriteRule ^[^/.]+\.(pdf|doc)$ /site-content/import/uploads%{REQUEST_URI} [L,R]

那么完整的重写规则应该是什么样子的呢?我在这里检查了相同的规则,但出现了一些问题。这在htaccess上下文中不起作用,因为它包含一个前导斜杠。我使用了这个重写规则^([^/]+\.(?:pdf | doc))$/站点内容/导入/上载/$1[R,L]似乎在这里工作它是否也匹配
/filename.pdf
?而且它只匹配
.pdf
文件。
RewriteRule ^[^/.]+\.(pdf|doc)$ /site-content/import/uploads%{REQUEST_URI} [L,R]