从图像URL中删除/Sites/25/

时间:2019-07-29 作者:Jobbie Daddy

我正在使用子域运行多站点。我只想操纵“espanol”子域的图像路径。

以下是当前图像路径(示例):

https://espanol.xxx.xx.xx.xxx.xip.io/wp-content/uploads/sites/25/2016/08/2008-SKYTRAK-10054-160036928-2f.jpg
以下是所需内容:

https://espanol.xxx.xx.xx.xxx.xip.io/wp-content/uploads/2016/08/2008-SKYTRAK-10054-160036928-2f.jpg
只能对具有的“espanol”子域执行此操作。htaccess?

1 个回复
SO网友:MrWhite

我假设您想在内部重写URL,而不是在外部重定向请求。。。

重写要删除的图像URL路径/sites/25 对于espanol 然后在.htaccess WordPress前端控制器之前的文件:

RewriteCond %{HTTP_HOST} ^espanol\\.
RewriteRule ^(wp-content/uploads)/sites/25/(\\d{4}/\\d\\d/[\\w-]+\\.jpg)$ /$1/$2 [L]
以下内容/sites/25/, 假设源URL路径的形式为4位、斜杠、2位、斜杠和任意数量的单词(\\w) 包括连字符,然后.jpg. (\\w 是的速记字符类a-z, A-Z, 0-9_.)

UPDATE: 我还需要在重写期间删除“espanol”子域。

你不能用简单的重写来做到这一点。无法跨主机重写URL。您需要将服务器配置为反向代理,并使用mod\\u代理代理请求。或者将其实现为外部重定向。

例如,作为外部重定向:

RewriteCond %{HTTP_HOST} ^espanol\\.(.+) [NC]
RewriteRule ^(wp-content/uploads)/sites/25/(\\d{4}/\\d\\d/[\\w-]+\\.jpg)$ https://%1/$1/$2 [R=302,L]
这确实假设您没有共享同一“espanol”子域的其他域。

这个%1 反向参考(注意% 前缀)中的RewriteRule 替换保留主机名减去espanol. 前缀

将302(临时)更改为301(永久)-如果这是您的意图-只有在您测试了它是否适合您之后。浏览器会持久缓存301s,因此可能会导致测试出现问题。