【问题标题】:Redirecting to a website's subdirectory based on incoming URL?根据传入的 URL 重定向到网站的子目录?
【发布时间】:2014-02-01 22:10:57
【问题描述】:

我有两个网站; site1.com 和 site2.com。

我都设置了相同的 A 记录 - 通向相同的服务器/站点。但是,对于 site2.com,我希望重定向到子域;这样如果用户在浏览器中输入 site2.com,他们将被重定向到 site1.com/directory/

我原以为我可以通过在 /var/www 下创建一个 .htaccess 文件来轻松做到这一点,如下所示;

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www\.)?site2\.com [NC]
RewriteRule ^(.*)$ http://site1.com/directory/ [R=301,L]

不幸的是,这似乎对传入的请求没有任何影响。谁能帮我解决这个问题?

【问题讨论】:

  • 嗯,我看不出你的条件/规则有什么问题。你的 htaccess 在根级别吗?
  • @JustinIurman :最初没有可用的 htaccess,所以我在 nano 中创建了 .htaccess 文件,并将其存储在 /var/www/ 下;像往常一样,公共文件/页面位于 /var/www/html/
  • 你的 htaccess 必须在你的文档根目录中
  • 道歉 - 将 .htaccess 移至文档根目录 (/var/www/html/).. 但不幸的是,仍然没有区别。

标签: apache .htaccess redirect


【解决方案1】:

您应该将其设置为 Apache 中的虚拟主机。然后 Apache 将负责显示该站点的适当文件。 这可以在您的 Apache 配置文件中进行修改。 然后,当您输入 www.site2.com 时,它将显示正确的文件。

例子

Server configuration

# Ensure that Apache listens on port 80
Listen 80

# Listen for virtual host requests on all IP addresses
NameVirtualHost *:80

<VirtualHost *:80>
DocumentRoot /www/site1
ServerName www.site1.com

# Other directives here

</VirtualHost>

<VirtualHost *:80>
DocumentRoot /www/site1.com/site2
ServerName www.site2.org

# Other directives here

</VirtualHost>

在此处查看 VHost。

http://httpd.apache.org/docs/2.2/vhosts/examples.html

更新: 尝试添加服务器别名。

ServerName   www.site2.com
ServerAlias  *.site2.com

更新 2:

回答您的 cmets。这是另一个基本示例。更多的指令可以进入那里,但你可以决定。

<VirtualHost *:80>
     ServerAdmin webmaster@site1.com
     DocumentRoot /var/www/html
     ServerName site1.com
     ServerAlias www.site1.com
     ErrorLog /var/logs/httpd/site1-error_log
     CustomLog /var/logs/httpd/site1-access_log common
</VirtualHost>

<VirtualHost *:80>
     ServerAdmin webmaster@site2.com
     DocumentRoot /var/www/html/site2
     ServerName site2.com
     ServerAlias www.site2.com
     ErrorLog /var/logs/httpd/site2-error_log
     CustomLog /var/logs/httpd/site2-access_log common
</VirtualHost>

然后确保您还有一个CNAME DNS 记录www 指向两个站点的@(您的主站点)。这样您就可以根据需要使用 www 或不使用 www 访问这些网站。

以下是分步说明。如果仍然无法正常工作,则说明您的配置有问题。

http://www.rackspace.com/knowledge_center/article/centos-apache-virtual-hosts

【讨论】:

  • 谢谢 - 我用新的 vhost、documentroot 和 servername 更新了我的 httpd conf,并重新启动了 httpd - 但是,我们似乎仍然没有重定向到子目录。如果在没有 www 的情况下访问该站点会有所不同。前缀?
  • 查看我的更新。看看这是否有帮助。确保文件不同,并且您可以告诉您正在查看 2 个不同的网站。
  • 将两个站点都作为虚拟主机。列出 site1,然后在下面做 site2,如示例所示。
  • 奇怪的是,当我添加时,子目录不再可以访问?尝试通过 site1.com/site2/ 访问它时会出现 404 错误 - 而 site2 url 仍将流量直接定向到 site1.com。有什么想法吗?
  • 你那里还有那些 htaccess 规则吗?取出任何重写如果配置设置正确,它应该可以工作。顺便说一句,您使用的是什么操作系统?
猜你喜欢
  • 1970-01-01
  • 2021-11-26
  • 1970-01-01
  • 2011-10-24
  • 1970-01-01
  • 2015-09-10
  • 2017-09-17
  • 1970-01-01
  • 2012-10-16
相关资源
最近更新 更多