重写 .htaccess 中子目录的 url

Posted

技术标签:

【中文标题】重写 .htaccess 中子目录的 url【英文标题】:Rewrite url for subdirectory in .htaccess 【发布时间】:2014-01-27 20:15:29 【问题描述】:

我将 wordpress 文件从根目录移至子目录。 wp-content/uploads 文件夹中上传了一些文件。直接访问这些文件时,出现 404 错误。

我只需要通过 .htaccess 重写 wp-content/uploads 的 url

我需要的是从 http://example.com/wp-content/uploads/2012/09/report.pdf 到 http://example.com/wp_sub/wp-content/uploads/2012/09/report.pdf

这是我尝试过的

RewriteCond %HTTP_HOST ^(www.)?example.com$

重写规则 ^(.*)$ http://www.example.com/wp_sub/$1 [R=301,QSA,L]

这会为每个链接添加一个子目录 wp_sub。 我只需要为 wp-content/uploads 链接添加一个子目录“wp_sub”。

我错过了什么?

【问题讨论】:

【参考方案1】:

让我们看看

RewriteRule ^(.*)$ http://www.example.com/wp_sub/$1

意思是: 您将所有内容 (^(.*)$) 重写为 http://www.example.com/wp_sub/$1。 好吧,您不想重写所有内容,对吗? :)

所以我们必须限制它只影响wp-content 文件夹:

RewriteRule ^(wp-content/.*)$ http://www.example.com/wp_sub/$1 [R=301,QSA,L]

【讨论】:

【参考方案2】:

您可以使用代码:

   RewriteRule ^wp-content/uploads/(.*)$ http://www.example.com/wp_sub/wp-content/uploads/$1 [R=301,L]

【讨论】:

【参考方案3】:

将此规则放在您的 /wp-content/uploads/.htaccess 文件中:

RewriteEngine On
RewriteBase /wp-content/uploads/

RewriteRule ^(.*)$ /wp_sub/$1 [L,R]

【讨论】:

以上是关于重写 .htaccess 中子目录的 url的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 .htaccess 文件重写子目录的 URL?

.htaccess伪静态(URL重写)绑定域名到子目录实现子站点

目录存在时htaccess重写url重定向

如何使用 htaccess 重写从 url 中删除此目录/文件夹?

虚拟主机.htaccess伪静态(URL重写)建立多站点

htaccess 列出目录并为其重写规则