如何根据url的写入规则重写图片路径?

Posted

技术标签:

【中文标题】如何根据url的写入规则重写图片路径?【英文标题】:How to rewrite the images path according to the written rules of the url? 【发布时间】:2022-01-19 13:23:33 【问题描述】:

我正在尝试使用参数重写应用程序的 url。 我在主文件main.php中有一个链接。

<a href="index?id=100&title=sub-url-here>Continue</a>

index.php文件中有一个图片标签,src指向ìmages/文件夹。

<img src="images/fileaname.png" />

这一切都很好。

写入网址后出现问题。 这就是我在.htaccess 文件中的内容

RewriteEngine O

RewriteRule ^index/([0-9]+)/([0-9a-zA-Z-_]+)/?$ index.php?id=$1&title=$2 [NC,L]

我现在在index.php 文件中:

<a href="index/100/sub-url-here/">Continue</a>

但是,main.php 文件中的图像路径现在指向

<img src="100/sub-url-here/images/fileaname.png" />

如何根据.htaccess中写的url改写图片路径?

【问题讨论】:

你的系统镜像目录结构是什么?只是/图像? 【参考方案1】:

问题是您使用的是图像的相对 URL。 浏览器 将这些相对于浏览器地址栏中的当前 URL 解析(除非您有一个 &lt;base&gt; 标记,否则)。因此,在浏览器中查看页面 URL /index/100/sub-url-here/ 时,相对 URL images/filename.png 自然会解析为 index/100/sub-url-here/images/filename.png,而不是您可能期望的 /images/filename.png

您需要使用相对于文档根目录的根目录相关 URL(以斜杠开头),或使用图像(和其他静态资源)的绝对 URL(带有方案+主机名) - 所以图像 URL 不是相对于正在显示的页面 URL。

例如:

 <!-- https://example.com/images/filename.png -->
 <img src="/images/filename.png">

另请参阅网站管理员堆栈上的以下问题,该问题更详细地介绍了在 URL 重写时使用相对 URL 路径:

https://webmasters.stackexchange.com/questions/86450/htaccess-rewrite-url-leads-to-missing-css

【讨论】:

当然他必须改变main.php 的行为来强制它,因为我知道main.php 正在生成那个硬编码的图像url,他想要一个.htaccess 解决方案。我怀疑这与浏览时的相对路径有关,因为他粘贴了完整的标签&lt;img src="100/sub-url-here/images/fileaname.png" /&gt; “因为他粘贴了完整的标签”——当然,这令人困惑。但是,这也是浏览器在 URL 重写后将原始 URL (&lt;img src="images/fileaname.png" /&gt;) 解析为的内容(他们说这是问题所在)。他们真的是根据请求的 URL 动态生成图片链接吗? index/ 前缀也被省略了。 是的,我们等待他的回应才知道。出于这个原因,我开始在他的问题中设置评论,询问图像文件夹,以防万一他计划在系统中创建它们,或者只是欺骗.htaccess/images 获取它们,尽管路径很少。也许他会在具有不同 url 路径的页面之间共享图像,如果 google 图像 seo 认为它们是重复的,这可能会很危险。 这是真的@MrWhite,index/ 前缀也存在。 感谢您的回答。我不需要编辑.htaccess 文件。我只是在寻找解决问题的方法。 root-relative URLs (starting with a slash) 不起作用。但是absolute URLs (with scheme+hostname) 这样的http://localhost/appname/index/images/fileaname.png 解决了这个问题。

以上是关于如何根据url的写入规则重写图片路径?的主要内容,如果未能解决你的问题,请参考以下文章

为什么这个图片网址重写规则不起作用?

根据url路径获取图片并显示到ListView中

JSP 从数据库中如何取得图片的路径?

python3爬取网页图片路径并写入文件

图片 url 是如何用 java fxml 写的

Scrapy基础————图片下载后将本地路径添加到Item中