在 Ubuntu 14.04 上使用 mod_rewrite 隐藏端口和文件夹

在 Ubuntu 14.04 上使用 mod_rewrite 隐藏端口和文件夹

我有一个 AWS EC2 实例,并且我正尝试将两个不同的 URL 指向同一个实例。

我使用 NGINX(端口 80)作为 Ruby 服务器,使用 APACHE2(端口 8080)作为 WordPress 服务器。

我配置了 NGINX,以便当请求“blog.example.com”时,我将其重定向到 example.com:8080/html/wordpress/,如下所示:

server{
   listen 80;
   server_name blog.example.com;

   location{
      proxy_pass http://example.com:8080/html/wordpress/;
   }
}

访问 blog.example.com 作为主页没问题。但是,当我尝试登录时,我得到的 URL 类似于http://example.com:8080/html/wordpress/wp-login.php

我想要实现的是将该 URL 转换为 blog.example.com/wp-login.php 或 blog.example.com/login

我尝试在 /etc/apache2/sites-available/000-default.conf 文件上使用 mod_rewrite,但没有成功。

000-default.conf 文件:

<VirtualHost *:8080>
  ServerName example.com

  RewriteEngine on
  RewriteRule example.com:8080/html/wordpress/(.*)$  blog.example.com/$1 [P,L]
</VirtualHost>

我该怎么做才能解决这个问题?有没有比重写更好的方法?

答案1

您需要让 Wordpress 生成不包含端口号的 URL。Web 服务器无法完成此任务,因为它们无法很好地理解 HTML 代码以可靠地转换 URL。

相关内容