从不同端口重定向到子域-htaccess

时间:2019-07-11 作者:George Alvis

5天前,我创建了一个Digital Ocean实例来安装WordPress网站。我已经有自己的域,并创建了DNS子域blog.example.com. 服务器同时运行nginx和apache,因此我的apache端口是8082。下面是我的实际WordPress URL的样子:

www.example.com:8082/wordpress/
下面是我尝试过的一些东西。

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www\\.)?example\\.com:8082/wordpress\\
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ([a-z0-9-]+)/? http://$1.example.com [R=301,NC,L]

</IfModule>
现在我的预期结果是

www.example.com:8082/wordpress\\ 

blog.example.com

1 个回复
SO网友:MrWhite

RewriteCond %{HTTP_HOST} ^(www\\.)?example\\.com:8082/wordpress\\
TheHTTP_HOST 服务器变量包含Host HTTP请求标头-这不包括URL路径(即。/wordpress/). 但为什么还要加反斜杠呢(\\) 在结尾,而不是(正)斜杠(/)? 那只是一个拼写错误吗?(尽管您也将其贯彻到了下面的示例中?)

RewriteRule ([a-z0-9-]+)/? http://$1.example.com [R=301,NC,L]
不太清楚这背后的想法是什么,但该指令假设blog 存在于请求的URL路径中,但不在您的示例中?而且,除非您有多个子域重定向,否则似乎不需要一般化的匹配和替换?

我还想问,为什么需要检查请求是否映射到目录或文件的条件。通过检查它是否未映射到目录,它将不会重定向/wordpress/ (假设这是一个物理目录)。

重定向www.example.com:8082/wordpress/blog.example.com 如您的示例(单个URL重定向)所示,您需要在根目录的顶部执行以下操作.htaccess 文件:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\\.)?example\\.com:8082
RewriteRule ^wordpress/$ http://blog.example.com/ [R=301,NC,L]
如果.htaccess 文件位于/wordpress 子目录,然后更改RewriteRule 图案读取^$ 而不是^wordpress/$

如果example.com:8082blog.example.com 指向文件系统的不同区域,然后可以删除该条件(RewriteCond 指令)。

不需要<IfModule> 包装器或RewriteBase 此处为指令。

尽管我很惊讶你不想批量重定向所有的子URL,但我还是觉得很奇怪?即重定向www.example.com:8082/wordpress/<something>blog.mydomain.com/<something>. 或者你呢?

相关推荐

Nginx+apache反向代理上的WordPress重定向循环

我正在尝试在nginx+apache反向代理配置上安装新的Wordpress。我的安装过程如下:安装的nginx和apache服务器将nginx(下面的conf)配置为代理apache服务器(在端口8080上侦听)生成了让我们使用带有nginx插件的certbot加密SSL证书。com,setup file ownership/permissions运行wordpress安装,生成配置并添加HTTPS详细信息(下面的conf)我打算只允许通过HTTPS访问此站点,因此我已设置nginx conf将所有流量