sparkertime
My Phoenix app has a variety of scopes distinguished by host as follows:
scope "/", LockerWeb, host: "host.example.com" do
pipe_through :inertia
get "/", HostController, :index
get "/connect", HostController, :connect
end
scope "/", LockerWeb, host: "play.example.com" do
pipe_through :browser
get "/", PageController, :landing
post "/access", PageController, :access
get "/join", PageController, :show_join
post "/join", PageController, :do_join
end
Is there a better option for routes than my own homegrown replacement of VerifiedRoutes? AFAICT it doesn’t take the hostnames of scopes into consideration.
I suspect the robust solution here would be multiple endpoints, perhaps in an umbrella app, but this is already a teensy application that will perhaps max out at two dozen routes.
Thanks!
Trending in Questions
I having some trouble figuring out if I have set myself too strict of standards for my production server. Currently I can handle 75% of r...
New
Hello,
I’m trying to build a basic Phoenix web-app, and I’d like to use Tailwind.
However, when I launch mix phx.server, I get an error...
New
Hi everyone,
I am toying with the idea of building a “match maker” for giving personal help to people that wants to start coding.
I sta...
New
I’m working on a small exercise involving update_in/3, and I came up with this solution:
data = %{
name: "Periodic Table",
category:...
New
I’ve got trouble wrapping my head around the order in which functions are called in this snippet (from Phoenix’s authentication):
toke...
New
Is there any way to avoid the Hologram compiler running when using iex? It seems like the front-end code could potentially be disregarded...
New
** (ArgumentError) expected :max_attempts to be a positive integer, got: {:@, [line: 10, column: 19], [{:max_attempts, [line: 10, column:...
New
Other Trending Topics
Edit: 2026 May 15 - This post is archived.
Mob is alive!!
Main docs: mob v0.7.11 — Documentation
A bit of explanation for the slightly c...
New
I am happy to introduce the very α version of the new programming language compiled to BEAM.
Welcome Cure.
It has literally three kille...
New
Hobbes is a low-level distributed database for the Elixir programming language.
Hobbes provides a simple, safe, and scalable storage lay...
New
A little off-topic, but I feel like people here have a good head on their shoulders.
I used to be quite good at making software. Was luc...
New
Hey. Is there anyone here who creates agents in their apps? Not talking about using agents, but creating them. I’m finding it pretty diff...
New
ExRatatui lets you cook up rich terminal UIs in Elixir, powered by Rust’s ratatui via Rustler NIFs. Build interactive terminal applicatio...
New
Categories:
Sub Categories:
Forums
Popular Tags
- #ecto
- #liveview
- #troubleshooting
- #learning-elixir
- #library
- #deployment
- #erlang
- #testing
- #genserver
- #mix
- #absinthe
- #remote-other
- #otp
- #plug
- #how-to-question
- #macros
- #postgres
- #elixirconf
- #channels
- #exunit
- #discussion
- #code-sync
- #podcasts
- #javascript
- #onsite
- #dialyzer
- #docker
- #authentication
- #umbrella
- #full-time-contract
- #podcasts-by-brainlid
- #ai
- #ecto-query
- #elixirconf-us
- #blog-post
- #elixir-ls
- #phoenix_html
- #iex
- #graphql
- #genstage
- #websockets
- #supervisor
- #advent-of-code
- #distillery
- #processes
- #elixirconf-eu
- #api
- #forms
- #metaprogramming
- #hex










Showing Posts 1 to 4- Show Best Posts
- Show All (oldest first)
- Show All (newest first)
sparkertime
Thanks! The inbound routing part works fine with scopes in a router - it’s just that I’m not sure about the best way to build links in my app via routes. Would your approach impact how links are constructed via routes ala VerifiedRoutes ?
Schultzer
You can still use verified routes and changing the host in the conn.
Setting the host in the router, if you are only dealing with subdomains is great, but if the host can be more dynamic, then it might be easier to set them in the conn in your endpoint per request . If your app is running on multiple servers with their own domain then you can let your load balancer deal with it and keep your app dumb.
Phoenix.VerifiedRoutes — Phoenix v1.8.8 Phoenix.Controller — Phoenix v1.8.8
sparkertime
Appreciate the response. I’m probably either misunderstanding and/or I haven’t explained my issue very well.
In the example above, the verified route
~p"/"could refer to two different controllers and two different actions. In a single response, I need to build links that could refer to either - some links in a page point tohost.example.comroutes fromplay.example.comand some won’t.I’m not sure I could set the host on a per-conn basis because of this intermixing of links within a single response. Perhaps you mean setting the host on the conn when passing it into the
urlmethods?Right now, my solution is a new function,
cross_domain_urlthat accepts ahostparameter that is derived from the same keys inconfig.exsthat drive the hostnames on the scopes. It works, but I’m just curious if there’s something I’m missing in how routes are supposed to work when combined with scopes with hosts.For example,
mix phx.routesgenerates a number of duplicated routes because it isn’t taking the scope’s hosts into accountSchultzer
url/3 takes more then a conn, you can use conn, socket, endpoint or uri. I’ll admit I purposely did not give you an exact answer, but a more general one. The main point is, nothing stopping you from using verified routes with highly dynamic host and url generations.