重写 URL,找不到 404 文件

问题描述 投票:0回答:1

我试图从 URL 中删除 2 个文件夹路径,但我无法让它工作。 我的网址是这样的:

http://example.com/files/uploads/PP/test.pdf
我想从 URL 中删除 /files/uploads,这样我就只剩下
http://example.com/PP/test.pdf
.

我的重写规则是这样的:

RewriteBase /files/uploads/
RewriteRule ^files/uploads/(.*) /$1 [NC,L,R=302]

URL 在

http://example.com/PP/test.pdf
中被重写,但它表示该文件不存在。 我该如何解决这个问题?

mod-rewrite apache2
1个回答
0
投票

您不使用

.htaccess
实际“更改”URL。您使用
.htaccess
允许“更改”的 URL 工作。必须首先在您的内部链接(在您的 HTML 源代码中)中更改 URL。

(旁白: 您稍后可以实施额外的重定向,将“旧”URL 重定向到“新”URL - 为了 SEO - 但这是次要的,不需要让它“工作”。并且因为这是一个

.pdf
文件,那么这可能不是一个问题。这就是您尝试使用您发布的“重定向”所做的事情。)

因此,假设实际文件位于

/files/uploads/PP/test.pdf
并且您正在链接到
/PP/test.pdf
(新的规范 URL),那么您将在根
.htaccess
文件的顶部使用以下内容在内部重写来自
/PP/test.pdf 的请求
回到
/files/uploads/PP/test.pdf
:

RewriteEngine On

RewriteRule ^PP/test\.pdf$ files/uploads/$0 [END]

其中

$0
是一个反向引用,它包含来自
RewriteRule
pattern 的整个匹配项。 IE。
PP/test.pdf
在这种情况下。

要匹配任何一个路径段深的

.pdf
URL,然后相应地修改
RewriteRule
pattern。例如:

RewriteRule ^[^/]+/[^/]+\.pdf$ files/uploads/$0 [END]

参考:

© www.soinside.com 2019 - 2024. All rights reserved.