如何根据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 解析(除非您有一个 <base>
标记,否则)。因此,在浏览器中查看页面 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
解决方案。我怀疑这与浏览时的相对路径有关,因为他粘贴了完整的标签<img src="100/sub-url-here/images/fileaname.png" />
“因为他粘贴了完整的标签”——当然,这令人困惑。但是,这也是浏览器在 URL 重写后将原始 URL (<img src="images/fileaname.png" />
) 解析为的内容(他们说这是问题所在)。他们真的是根据请求的 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的写入规则重写图片路径?的主要内容,如果未能解决你的问题,请参考以下文章