>我正在尝试创建一个类似于下面的重写规则
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
你可以使用这个:
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]
尝试正
则表达式^/[^/]+.(pdf|doc)$
。将匹配第一个/
,任何不/
并以.pdf
或.doc
结尾的字符。
正则表达式 101 示例
RewriteRule ^/([^/]+.(?:pdf|doc))$ /site-content/import/uploads/$1 [L,R=301]