我试图从 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
中被重写,但它表示该文件不存在。
我该如何解决这个问题?
您不使用
.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]
参考: