【发布时间】:2021-01-10 12:02:03
【问题描述】:
我有 2 个站点,一个在我的主域上运行的 Laravel/Vuejs 应用程序(例如website.com)和一个在子域上运行的简单 WordPress 博客(例如blog.website.com)。我不想将我的 WordPress 博客作为子文件夹放在我的 Laravel 应用程序的公共文件夹中,但我想像现在一样将两个站点分开。
我试图弄清楚如何在我的 Laravel 应用程序的“/blog”网址上重定向或显示我的 WordPress 博客的内容。 website.com/blog 应该得到blog.website.com 的内容,blog.website.com 应该重定向到website.com/blog。
您可以在下面找到我的.htaccess 文件中的重定向,将我的blog.website.com 重写为website.com/blog,这就像一个魅力!我的子域使用尾随“/blog”重定向到我的 Laravel 应用程序。
//
// .htaccess
//
# Rewrite subdomain to main url.
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^blog.website.com [NC]
RewriteRule ^(.*)$ https://website.com/blog/$1 [R=301,L]
</IfModule>
现在这是棘手的部分开始的地方。我的 Laravel 应用程序显示一个 Vuejs(带有 Vue 路由器)应用程序,我的 web.php 强制任何路由(“api”或“博客”除外)返回欢迎视图,其中包含我的 Vuejs 资产(CSS、JS 等)。我还在我的 web.php 文件中添加了一个“/blog”异常,以便在访问者访问博客页面时重定向他们,如下面的代码所示:
//
// web.php
//
Route::get('/{any?}', function (){
return view('welcome');
})->where('any', '^(?!api|blog).*$');
Route::get('/blog', function () {
return redirect('https://blog.website.com/');
});
按预期捆绑在一起的所有内容都会导致 ERR_TOO_MANY_REDIRECTS 错误或无限重定向循环。访问 blog.website.com 会导致 url 重写为 website.com/blog,然后将“返回”重定向到 blog.website.com。
从 web.php 文件中删除 https://blog.website.com/ 重定向会导致 Laravel 找不到默认的 404 页面。那么,我该如何解决这个重定向问题,让我的 Laravel 和 WordPress 环境彼此分开呢?
编辑:
正如 Kamlesh Paul 建议的那样,我尝试通过在 http 块内添加服务器块来编辑我的 nginx.conf 文件:
//
// /etc/nginx/nginx.conf
//
http {
...
server {
server_name blog.website.com;
return 301 https://www.website.com/blog$request_uri;
}
}
在删除所有其他可能的解决方案(.htaccess 和 web.php 更改)并重新启动服务器/nginx 后,没有任何反应。
【问题讨论】:
-
它在 sharedhost 或 vps 上。?
-
嗨,Kamlesh Paul,两者都托管在 VPS 上!
-
您是否为子域创建了配置。?它是 nginx 或 apache2
-
in
Route::get('/blog', function () {你不应该展示你的博客吗?而不是重定向到旧博客?意思是,return view('welcome');或return view('blog-index');或类似的东西 -
/blog应该显示blog.website.com子域的内容。
标签: wordpress laravel .htaccess redirect