axsuul/rails-reverse-proxy

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

Screen Shot 2019-10-17 at 12 14 51 PM

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