【发布时间】:2021-12-25 09:13:21
【问题描述】:
我有一个网站,比如domain1.example,部署在带有 apache2 的 Amazon EC2 机器上。
我想将domain2.example 指向domain1.example/path。
基本上是这样的:domain2.example -> domain1.example/pathdomain2.example/one -> domain1.example/path/onedomain2.example/two/page -> domain1.example/path/two/page
(不改变浏览器地址栏中的URL)
我试过这些方法:
- 向
/etc/apache2/sites-available/000-default.conf添加重写规则
...
<VirtualHost *:80>
ServerName "domain2.example"
ServerAdmin email@domain1.example
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteEngine On
RewriteRule ^(.*)$ https://domain1.example/path/$1 [P]
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
</VirtualHost>
- 为项目文件夹中的
.htaccess添加重写规则
RewriteCond %{HTTP_HOST} ^domain2\.example [NC]
RewriteRule ^(.*)$ https://domain1.example/path/$1 [P]
它们都不起作用。两个域都服务于根文件夹。我做错了吗?
【问题讨论】:
-
“它们都不起作用”实际上是什么意思?确切地?您是否收到了意想不到的内容?有没有指出错误?哪一个?当您提出测试请求时,宇宙是否崩溃了?
-
这里的一个猜测可能是您收到了一个 http 状态 500。这可能是由于代理模块未加载到 http 服务器的问题引起的。在您的 http 服务器的错误日志文件中明确指出的问题。但正如所说:这只是一个猜测 ...
-
重定向根据定义更改 URL。您正在寻找的不是重定向。您希望在两个不同域下的 URL 上提供相同的内容。我编辑了您的问题以删除“重定向”一词。
-
好的,所以您的规则很可能根本不会被应用。我们无法告诉您原因,我们无权访问该信息。
-
如果我理解你对@StephenOstermiller 给出的答案的评论,那么我想知道为什么你不能简单地使用内部重写规则而不是使用那些极其昂贵的代理规则......
标签: apache .htaccess amazon-ec2