.htaccess 重定向不适用于 PDF 文件

.htaccess redirect not working for pdf files

提问人:AutoBaker 提问时间:10/13/2023 最后编辑:AutoBaker 更新时间:10/16/2023 访问量:41

问:

我已经更改了网站的 .htacces 以将每个请求重定向到新站点,但以(wp-admin、wp-content 等)开头的任何内容除外。wp

我添加了以下代码,该代码适用于所有页面,但不适用于 PDF 文件(存储在 )。这些不会被重定向到新站点,而只是正常打开。第二个也应该拾取任何 PDF 文件并重定向它们,但它不起作用。即使我将 PDF 文件的 URL 更改为虚构的 URL,我也会转到旧站点的 404 页面,而不是重定向到新站点。我是否遗漏了一些明显的东西?/wp-content/RewriteCond

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/wp.*$ [OR]
RewriteCond %{REQUEST_URI} ^.*\.pdf$ [NC]
RewriteRule ^(.*)$ https://www.example.com/products?utm_medium=$1 [L,R=301]
</IfModule>

我已经将代码通过几个不同的.htaccess测试工具,他们都说它应该可以完美地工作。我已经广泛尝试了不同的选项和不同的标志,包括将mod_rewrites拆分为单独的块,没有什么可以使pdf文件重定向。

我已经通读了文档:https://httpd.apache.org/docs/2.4/rewrite/intro.html,找不到任何原因来解释为什么这不起作用。

以下是整个 .htaccess 文件的副本以供参考。

<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/wp.*$ [OR]
RewriteCond %{REQUEST_URI} ^.*\.pdf$ [NC]
RewriteRule ^(.*)$ https://www.example.com/products?utm_medium=$1 [L,R=301]
</IfModule>

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Redirect 301 /wp/example-product-1/ https://www.example.com/products/example-product-1/
Redirect 301 /wp/example-product-2/ https://www.example.com/products/example-product-2/
Redirect 301 /wp/example-product-3/ https://www.example.com/products/example-product-3/

# php -- BEGIN cPanel-generated handler, do not edit
# Set the “ea-php70” package as the default “PHP” programming language.
<IfModule mime_module>
  AddHandler application/x-httpd-ea-php70 .php .php7 .phtml
</IfModule>
# php -- END cPanel-generated handler, do not edit

欢迎任何意见或建议,提前致谢!

WordPress Apache .htaccess 重定向

评论

1赞 arkascha 10/14/2023
难道您在测试时只是在查看客户端缓存的文档吗?
0赞 AutoBaker 10/16/2023
我已经在私人浏览器中测试了它,我还通过随机组成带有“.pdf”的 PDF 名称来测试它。真正的链接仍然打开文件,并且在它进入原始网站上的 404 页面后带有 .pdf 的随机链接(不会被重定向到新网站)
0赞 AutoBaker 10/16/2023
有什么方法可以在子文件夹中覆盖规则?我已经在规则上放置了 [L] 标志,以试图防止这种情况发生。
1赞 arkascha 10/17/2023
当然,您可以在子文件夹中覆盖它。这就是为什么使用这样的分布式配置文件(“.htaccess”)最终可能不是一个好主意的原因之一,因为事情可能会变得非常复杂,几乎不可能调试。将此类规则保存在中央配置中要简单得多。旗帜对此没有多大帮助。您需要改用该标志。LEND

答: 暂无答案