apache - 将所有子域 URL 重定向到匹配的主域 URL - 重定向页面路径不起作用
问题描述
使用 Ubuntu 16.04 和 Apache 虚拟主机。
我有一个 Wordpress 网站:www.example.com
其他网站通常链接到 URL,例如:
- sub1.example.com/page1
- sub2.example.com/page2
我想将它们重定向到:
- example.com/page1
- example.com/page2
我努力了:
RewriteCond %{HTTP_HOST} ^sub1.example.com$
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
和
RewriteCond %{HTTP_HOST} ^sub1\.example\.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]
使用这两种配置,我得到以下行为:
- sub1.example.com 按预期转到 example.com
- sub1.example.com/page1 转到通用 Apache 404 页面“在此服务器上未找到请求的 URL”。使用 URL sub1.example.com/page1,它不会重定向
我的 DNS 设置涉及指向服务器 IP 的 A 记录,例如 example.com、www、sub1 等。
我的虚拟主机 .conf 文件如下所示:
<VirtualHost *:80>
ServerAdmin webmaster@example.com
DocumentRoot /var/www/example.com/public_html
ServerName example.com
ServerAlias www.example.com
<Directory /var/www/example.com/public_html/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
<IfModule mod_dir.c>
DirectoryIndex index.php index.pl index.cgi index.html index.xhtml index.htm
</IfModule>
</VirtualHost>
我尝试将 sub1.example.com 添加为 ServerAlias 并重新加载 Apache 无济于事。
我该如何解决这个问题?
解决方案
我通过为每个子域创建单独的虚拟主机来解决这个问题,每个子域都有自己的文件结构和 .htaccess 文件。
推荐阅读
- ruby-on-rails - 教程中的 create_list 错误
- javascript - AJAX 上的表单提交延迟
- javascript - 在浏览器中运行 reactjs webapp 时出现黑屏
- php - Laravel Blade 复选框未选中
- java - 如何验证 Vaadin 8 PasswordField?
- dependency-injection - Xunit项目中的依赖注入
- java - 在 Kotlin 中设置匿名接口
- sockets - 在两个处理器之间共享计算
- java - Maven编译中的未知编译错误
- javascript - Javascript DOM .querySelector() 空问题