gpt4 book ai didi

.htaccess - .htaccess 中 PDF 和图像文件的规范标题链接

转载 作者:行者123 更新时间:2023-12-05 01:03:13 25 4
gpt4 key购买 nike

我正在尝试为我网站上的一些 PDF 和图像文件设置规范链接。

示例文件夹结构:

/index.php
/docs/
file.pdf
/folder1/
file.pdf
/folder2/
file1.pdf
file2.pdf
/img/
sprite.png
/slideshow/
slide1.jpg
slide2.jpg

PDF URL 到规范 URL 的示例: http://www.example.com/docs/folder1/file.pdf --> http://www.example.com/products/folder1/

我试图避免将单独的 .htaccess 文件放在包含我的所有图像和 PDF 的每个子文件夹中。我目前有 7 个“主”文件夹,每个文件夹都有 2-10 个子文件夹,大多数子文件夹都有自己的子文件夹。我有大约 80 个 PDF,甚至更多图片。

我正在寻找一种(半)动态解决方案,其中某个文件夹中的所有文件都将 Canonical Link 设置为单个 url。我想尽可能多地保存在一个 .htaccess 文件中。

我知道 <Files><FilesMatch>不懂路径,那<Directory><DirectoryMatch>不适用于 .htaccess 文件。

有没有相当简单的方法来完成这个?

最佳答案

我不知道单独使用 apache 规则解决此问题的方法,因为它需要某种正则表达式匹配并在指令中重用匹配结果,这是不可能的。

但是,如果您将 php 脚本引入混合中,则非常简单:

RewriteEngine On
RewriteCond %{REQUEST_URI} \.(jpg|png|pdf)$
RewriteRule (.*) /canonical-header.php?path=$1

请注意,无论文件夹名称如何,这都会向脚本发送对所有 jpg、png 和 pdf 文件的请求。如果您只想包含特定文件夹,您可以添加另一个 RewriteCond 来完成此操作。

现在是 canonical-header.php 脚本:

<?php

// Checking for the presence of the path variable in the query string allows us to easily 404 any requests that
// come directly to this script, just to be safe.
if (!empty($_GET['path'])) {
// Be sure to add any new file types you want to handle here so the correct content-type header will be sent.
$mimeTypes = array(
'pdf' => 'application/pdf',
'jpg' => 'image/jpeg',
'png' => 'image/png',
);

$path = filter_input(INPUT_GET, 'path', FILTER_SANITIZE_URL);
$file = realpath($path);
$extension = pathinfo($path, PATHINFO_EXTENSION);
$canonicalUrl = 'http://' . $_SERVER['HTTP_HOST'] . '/' . dirname($path);
$type = $mimeTypes[$extension];

// Verify that the file exists and is readable, or send 404
if (is_readable($file)) {
header('Content-Type: ' . $type);
header('Link <' . $canonicalUrl . '>; rel="canonical"');
readfile(realpath($path));
} else {
header('HTTP/1.0 404 Not Found');
echo "File not found";
}
} else {
header('HTTP/1.0 404 Not Found');
echo "File not found";
}

请考虑此代码未经测试,并在将其发布到生产环境之前检查它是否在浏览器中按预期工作。

关于.htaccess - .htaccess 中 PDF 和图像文件的规范标题链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14637238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com