mirror of
https://github.com/BookStackApp/BookStack.git
synced 2026-02-05 00:29:48 +03:00
Images and "internal" links should not be referred by the (current) Bookstack-URL #996
Closed
opened 2026-02-04 23:20:54 +03:00 by OVERLORD
·
5 comments
No Branch/Tag Specified
development
l10n_development
further_theme_development
release
llm_only
vectors
v25-11
docker_env
drawio_rendering
user_permissions
ldap_host_failover
svg_image
prosemirror
captcha_example
fix/video-export
v25.12.3
v25.12.2
v25.12.1
v25.12
v25.11.6
v25.11.5
v25.11.4
v24.11.4
v25.11.3
v25.11.2
v25.11.1
v25.11
v25.07.3
v25.07.2
v25.07.1
v25.07
v25.05.2
v25.05.1
v25.05
v25.02.5
v25.02.4
v25.02.3
v25.02.2
v25.02.1
v25.02
v24.12.1
v24.12
v24.10.3
v24.10.2
v24.10.1
v24.10
v24.05.4
v24.05.3
v24.05.2
v24.05.1
v24.05
v24.02.3
v24.02.2
v24.02.1
v24.02
v23.12.3
v23.12.2
v23.12.1
v23.12
v23.10.4
v23.10.3
v23.10.2
v23.10.1
v23.10
v23.08.3
v23.08.2
v23.08.1
v23.08
v23.06.2
v23.06.1
v23.06
v23.05.2
v23.05.1
v23.05
v23.02.3
v23.02.2
v23.02.1
v23.02
v23.01.1
v23.01
v22.11.1
v22.11
v22.10.2
v22.10.1
v22.10
v22.09.1
v22.09
v22.07.3
v22.07.2
v22.07.1
v22.07
v22.06.2
v22.06.1
v22.06
v22.04.2
v22.04.1
v22.04
v22.03.1
v22.03
v22.02.3
v22.02.2
v22.02.1
v22.02
v21.12.5
v21.12.4
v21.12.3
v21.12.2
v21.12.1
v21.12
v21.11.3
v21.11.2
v21.11.1
v21.11
v21.10.3
v21.10.2
v21.10.1
v21.10
v21.08.6
v21.08.5
v21.08.4
v21.08.3
v21.08.2
v21.08.1
v21.08
v21.05.4
v21.05.3
v21.05.2
v21.05.1
v21.05
v21.04.6
v21.04.5
v21.04.4
v21.04.3
v21.04.2
v21.04.1
v21.04
v0.31.8
v0.31.7
v0.31.6
v0.31.5
v0.31.4
v0.31.3
v0.31.2
v0.31.1
v0.31.0
v0.30.7
v0.30.6
v0.30.5
v0.30.4
v0.30.3
v0.30.2
v0.30.1
v0.30.0
v0.29.3
v0.29.2
v0.29.1
v0.29.0
v0.28.3
v0.28.2
v0.28.1
v0.28.0
v0.27.5
v0.27.4
v0.27.3
v0.27.2
v0.27.1
v0.27
v0.26.4
v0.26.3
v0.26.2
v0.26.1
v0.26.0
v0.25.5
v0.25.4
v0.25.3
v0.25.2
v0.25.1
v0.25.0
v0.24.3
v0.24.2
v0.24.1
v0.24.0
v0.23.2
v0.23.1
v0.23.0
v0.22.0
v0.21.0
v0.20.3
v0.20.2
v0.20.1
v0.20.0
v0.19.0
v0.18.5
v0.18.4
v0.18.3
v0.18.2
v0.18.1
v0.18.0
v0.17.4
v0.17.3
v0.17.2
v0.17.1
v0.17.0
v0.16.3
v0.16.2
v0.16.1
v0.16.0
v0.15.3
v0.15.2
v0.15.1
v0.15.0
v0.14.3
v0.14.2
v0.14.1
v0.14.0
v0.13.1
v0.13.0
v0.12.2
v0.12.1
v0.12.0
v0.11.2
v0.11.1
v0.11.0
v0.10.0
v0.9.3
v0.9.2
v0.9.1
v0.9.0
v0.8.2
v0.8.1
v0.8.0
v0.7.6
v0.7.5
v0.7.4
v0.7.3
0.7.2
v.0.7.1
v0.7.0
v0.6.3
v0.6.2
v0.6.1
v0.6.0
v0.5.0
Labels
Clear labels
🎨 Design
📖 Docs Update
🐛 Bug
🐛 Bug
:cat2:🐈 Possible duplicate
💿 Database
☕ Open to discussion
💻 Front-End
🐕 Support
🚪 Authentication
🌍 Translations
🔌 API Task
🏭 Back-End
⛲ Upstream
🔨 Feature Request
🛠️ Enhancement
🛠️ Enhancement
🛠️ Enhancement
❤️ Happy feedback
🔒 Security
🔍 Pending Validation
💆 UX
📝 WYSIWYG Editor
🌔 Out of scope
🔩 API Request
:octocat: Admin/Meta
🖌️ View Customization
❓ Question
🚀 Priority
🛡️ Blocked
🚚 Export System
♿ A11y
🔧 Maintenance
> Markdown Editor
No Label
Milestone
No items
No Milestone
Projects
Clear projects
No project
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: starred/BookStack#996
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @ghost on GitHub (Jan 17, 2019).
Hi,
today i found one thing that bothers me... I'll try to make it as short as possible:
Back in the day when I initially set up BookStack I was running it on a custom Port, so the BookStack-URL was something like "https://your.imagination.here:12345".
I created a lot of books and pages, some of them had 40-50 pictures (it was documentation for some server-installation-procedure) plus text in them.
As time went by and I grew confident in the project, I changed the custom port to a standard :443, which means that from now on I could reach BookStack via "https://your.imagination.here".
Today I wanted to review some of my older books / pages and found all the images "missing".
I found out that BookStack tried loading them from the public URL (including the custom port I had to use back then) back in the day when I created the page.
https://your.imagination.here:12345/uploads/images/gallery/2018-10-Oct/scaled-840-0/KvRsGNZDj6T6zCEY-image-1538991146823.png
After testing quiet a bit I found that also "internal" Links (via "Insert Link" and manual page-selection from existing pages) are stored that way, which means they are not working any more...
This seems to be a bad idea, as it would mean that you may never ever change the address under which your BookStack-Instance is being hosted, as it vould make all images and internal links invalid.
So, if today I would host my instance on "bookstack.company.old.name.tld" and tomorrow they change their name so I would have to migrate it to "bookstack.company.new.name.tld" it would show the same problems that I mentioned above...
Any chance someone can come up with an idea on how to link images / links in a form that does not require the "public visible" URL for them to load but use some "internal reference" that is stored in the database and stays the same independent from the URL you use to access the app?
So, something like
something like this would be really nice to make BookStack as future-proof as possible, as right now I'm concerned about what happesn if you have created 50 book, 300 pages or whatever, everything perfectly set up and then change your domain / URL. it would all be for nothing, wouldn't it?
edit: alternatively it would be sufficient to have some kind of php artisan command that would just change all (old) strings to the new one...
@ssddanbrown commented on GitHub (Jan 17, 2019):
Hi @CliffyPrime, Thanks for the suggestion.
This issue is effectively a duplicate of #1137 and #732 so I will therefore be closing this.
From a technical point of view standardising on absolute URLS (as are currently in BookStack) is easier and requires less conditional logic although, yes, they are less flexible.
I’ve been careful not to store anything in the database in a way that would cause significant isssues when simply doing find/replace operations across the database so that always remains an option.
That’s a good idea. I’m sure many admins would be happy to have a helper for this operation. Feel free to open a new issue for that.
@ghost commented on GitHub (Jan 17, 2019):
thanks for your reply and sorry for me not finding the other issues.
even before you replied I got the same idea of replacing the URLs directly myself.
as I'm not a practiced SQL-guy I was pretty happy to have found a (seemingly, not sure for the long term) solution by:
use bookstackdbnamehere
show tables;
show columns from images;
update images set url = replace(url, ":16938/", "/");
update pages set html = replace(html, ":16938/", "/");
as I said, I'm really not into SQL so I have no clue how to easily find out in which tables and columns the URLs might be stored...
the table images was pretty straight forward, as it contains the column url.
the table pages has a lot of columns and the one called html (of course) contains the html, so replacing the strings there seems to have fixed the problems.
I just wonder: are there more places for me to look for and change these strings?
thank you so much for your work on this project! 👍
@ssddanbrown commented on GitHub (Jan 18, 2019):
No problem @CliffyPrime.
Just an advisory to anyone coming across this in the future, Please remember to backup your database before executing any commands to transform URL's.
@CliffyPrime Here's the other tables + columns you might want to update:
page_revisionstable,htmlcolumn - Revision history of pages and also storage of in-progress drafts.settingstable,valuecolumn - Some of the settings hold URL's such as the logo setting.@ghost commented on GitHub (Jan 18, 2019):
Thank you! :)
@comnam90 commented on GitHub (Mar 13, 2019):
Looping back to this, I'm currently having huge issues with this because I need to be able to reach my Bookstack instance on 2 separate URLs. One internal URL, and one external URL.
For the most part, leaving APP_URL blank, allows this to work. But things like images and such seem to fall over.
As per the PR #1275 I think dynamic links are needed as well as images should be relative not absolute, as it causes me massive pains.