Making rails-reverse-proxy work for a site not on Webflow with a blog hosted on Webflow with Href Prefix
Opened this issue · 1 comments
I wrestled with making this gem work with Webflow for a few days. Hopefully this will help someone do this in minutes.
Background:
We have a Rails 5 website on www.asdf.com
(not the actual site), that is not hosted by Webflow. We use Cloudflare.
We have a blog that someone built on Webflow at asdf-blog.webflow.io
(not the actual blog).
Goal
Make it so that www.asdf.com/blog
points to asdf-blog.webflow.io
. The url still shows as www.asdf.com/blog
, but displays the content at asdf-blog.webflow.io
.
Also, make it so that www.asdf.com/blog/posts/my-first-post
(with /blog
) still shows a url of www.asdf.com/blog/posts/my-first-post
(with /blog
), but displays the content at asdf-blog.webflow.io/posts/my-first-post
(without /blog
).
Hint
On Webflow, do not mess with changing slugs on Designer.
Just change the project settings under Hosting and Custom Code.
Steps
I followed the directions at https://university.webflow.com/article/href-prefix
For those steps:
Step 1 - This was already done.
Step 2 - I got someone to pay for the plan.
Step 3 - I did the following - installing the gem, adding the routes, and adding the controller.
In my Rails app, I installed this rails-reverse-proxy
gem.
In routes.rb
, I added:
get "/blog/*path", to: "blog#index"
get "/blog", to: "blog#index"
I added the controller:
# frozen_string_literal: true
class BlogController < ApplicationController
include ReverseProxy::Controller
BLOG_URL = "https://asdf-blog.asdf.com"
def index
reverse_proxy BLOG_URL, path: "/#{params[:path]}"
end
end
Step 4 - Two parts - on Webflow and on Cloudflare.
Step 4a - On the Webflow project settings, under the Hosting tab, I added a custom domain, asdf-blog.asdf.com
aka BLOG_URL
.
Step 4b - On Cloudflare, I arranged a rule to be set up, which is hinted at during Step 4a.
Type
was CNAME
.
Name
was asdf-blog
(the same subdomain as what I set up for the custom domain on Webflow project settings under Hosting).
Content
was proxy-ssl.webflow.com
.
Proxy status
was DNS
(a Proxy status
of Proxied
did not work at the time).
Step 5 - On Webflow project settings, under Custom Code, I set Href Prefix
to /blog
.
Step 6 - I clicked the Save Changes
and the Publish
button for the publish destinations, especially publishing to asdf-blog.asdf.com
.
Note
The links on the Rails 5 website, asdf.com/blog
(with a path that is prepended with /blog
), will work because those requests will go through BlogsController
, and the path is getting changed to /#{params[:path]}
(removing /blog
from the request to Webflow).
However, the links on asdf-blog.webflow.io
and asdf-blog.asdf.com
will not work because of the Href Prefix
adding /blog
to all links, but that doesn't matter in terms of the goals for making asdf.com/blog
work. This is because requests made to Webflow directly will have /blog
and will not have that request changed by BlogsController
. Webflow will return a 404 because it doesn't know anything about /blog
.
Hey everyone, I shared a blog post about this topic in more detail. I hope the post can help someone that encounters this issue: Serve Webflow Pages On The Same Subdomain With Rails App