我有一个使用主域 (domain.com) 的应用程序,我希望能够将其他域指向相同的内容,而无需维护单独的代码实例。该应用程序包含在主域上的一个文件夹中,搜索引擎等无法访问此文件夹,因此我不担心 SEO 等。所有域都将位于运行 Apache 的同一台服务器上。
我想确保域名保持用户最初输入的状态,而不是重定向到 domain.com,因为这样做的目的是让多个客户可以使用代码,但应用程序使用他们的颜色、徽标等标记给他们使用从 MySQL 数据库中获取的设置。
例如,用户访问 newdomain.com,他们会看到一个登录表单,该表单是存储在 /home/newdomain/public_html 中的本地登录表单 - 成功登录后,他们将被定向到包含应用程序的 /folder,而不是被定向到 newdomain。 com/folder 是空的 我希望他们被重定向到 domain.com/folder(即 /home/domain/public_html/folder),但仍然在他们的浏览器中看到 newdomain.com/folder,所以它对他们是透明的。
我使用 htaccess 尝试了以下https://stackoverflow.com/a/9521102/1278201,但它将 URL 更改为 domain.com:
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^(www\.)?domain\.com$ [NC]
RewriteRule ^ http://www.domain.com/%{REQUEST_URI} [R=301,L]
我还发现了一篇提到使用 Apache 配置的帖子,这似乎是一个更好的选择,因为我不关心 SEO,但不确定我是否可以使用它来仅重定向一个文件夹(即不重定向 webroot,只重定向/文件夹)https ://stackoverflow.com/a/3849129/1278201:
NameVirtualHost *
<VirtualHost *>
ServerName domain.com
DocumentRoot /home/domain/public_html/folder
</VirtualHost>
<VirtualHost *>
ServerName newdomain.com
DocumentRoot /home/domain/public_html/folder
</VirtualHost>
我还发现一些帖子指出了会话和 SSL 证书https://stackoverflow.com/a/140008/1278201可能存在的问题,这两者都在应用程序中使用。我很高兴为每个域安装单独的 SSL 证书,但上述任何一个都可以重定向“中断”会话吗?如果有人登录到 newdomain.com/folder 然后转到 domain.com/folder 他们将需要再次登录,但是 domain.com/folder 重定向到 newdomain.com/folder 的事实是否会对会话安全产生影响? ?
实现预期结果的最佳方法是什么?