受到来自 Paul Arterburn 的that great article的启发,并受到我的客户搜索引擎优化需求的推动,我已经设置了由WPEngine托管的Wordpress博客,以便在Ruby的子目录中工作由Heroku托管的on-Rails应用。
问题是相对网址与博客网址不匹配。例如,当我创建<a href="/">Should be https://www.example.com/blog/</a>
之类的链接时,网页会将链接显示为https://www.example.com
。不酷。
奇怪的是,其余的链接似乎没问题。
其他一些东西可以帮助解决这个问题。我们正在使用扩展程序AMPforWP。当我们将/amp
添加到帖子网址时,例如 https://www.example.com/blog/some-category/my-great-post/amp
就会变为https://example.wpengine.com/blog/some-category/my-great-post/amp
。
最终,如果我停用AMPforWP扩展名,无法访问URL(但是博客主页),则服务器返回500错误。即使我再次激活AMPforWP。
/config/routes.rb
get '/blog' => redirect("https://www.example.com/blog/")
/config.ru
# https://github.com/waterlink/rack-reverse-proxy
use Rack::ReverseProxy do
reverse_proxy /^\/blog(\/.*)$/, 'http://example.wpengine.com$1', :username => 'example', :password => 'fakepwd', :timeout => 500, :preserve_host => true
end
https://my.wpengine.com/installs/example/domains
https://www.example.com/blog/wp-admin/options-general.php
的.htaccess
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
# BEGIN wtfdivi
# END wtfdivi
我被卡住了......: - (
可以非常感谢任何帮助。谢谢。
答案 0 :(得分:0)
我知道这个问题已经有一段时间了。我有相同的设置,但我有一个Rails应用程序将WordPress博客指向为“文件夹url”,而不是子域。这是我解决的方法。
首先,在反向代理服务器上,我必须禁用preserve_host
,以便它将域保留在请求中,而不会干扰我的规则。
config.middleware.insert(0, Rack::ReverseProxy) do
reverse_proxy_options preserve_host: false
reverse_proxy %r{^\/blog(\/.*)$}, "#{Rails.application.config.blog_url}$1"
end
然后在我的Wordpress上,将安装移至子文件夹(名为blog
)而不是根文件夹,并按如下所示使用了.htaccess
的大多数默认配置:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
# END WordPress
希望它仍然可以提供帮助。