【问题标题】:htaccess folder rewritehtaccess 文件夹重写
【发布时间】:2011-07-20 22:33:04
【问题描述】:

我在这里阅读了多篇关于 htaccess 文件夹重写的帖子,但似乎没有一个适合我的问题(正确)。

我的问题是:

我在服务器上有 2 个子文件夹,website1 和 website2。

当用户访问 www.foo.com 时,我希望视觉 url 保持不变,但希望服务器 URI 转到 /website1/,它将在其中加载 website1 的 index.php

然后,只有当用户再次访问 www.bar.com 时,我才想要同样的东西,但这次它链接到 /website2/,它将为第二个网站加载 index.php。

非常感谢一些帮助,因为我仍在学习重写。带有解释的示例将不胜感激。任何最佳实践建议(如果有的话)也将不胜感激。

【问题讨论】:

  • 您在寻找 VHost,而不是重写。

标签: apache .htaccess rewrite directory


【解决方案1】:

KingCrunch 是对的——设置这种环境的正确方法是在 Apache 配置文件中使用 <VirtualHost> 指令。

如果出于某种原因需要通过重写和 .htaccess .. 进行捐赠,那么您需要启用 mod_rewrite 并允许 .htaccess 文件包含重写规则(AllowOverride 指令)。

规则如下:

Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /

# rule #1
RewriteCond %{HTTP_HOST} =www.foo.com
RewriteCond %{REQUEST_URI} !^/website1/
RewriteRule (.*) /website1/$1 [L]

# rule #2
RewriteCond %{HTTP_HOST} =www.bar.com
RewriteCond %{REQUEST_URI} !^/website2/
RewriteRule (.*) /website2/$1 [L]

此代码将放置在根文件夹的 .htaccess 文件中。如果放置在其他地方(例如配置或虚拟主机上下文),可能需要进行一些调整。

第一个规则是www.foo.com,第二个是另一个域名。这些规则几乎相同。我们告诉 Apache 检查域名(通过{HTTP_HOST} 请求变量),如果它匹配我们的域重写(内部重定向)URL 到一个更深的文件夹。第二个条件是防止重写循环(不重写已经重写的 URL)。 Apache 在执行 rewrite 后需要进行下一次 rewrite 迭代(就是这样工作的),并且需要这个条件来停止循环。

有用的链接:http://httpd.apache.org/docs/current/rewrite/

【讨论】:

  • 非常感谢朋友。这很好用。尽管每个人都反对它,但我只是将共享主机更改为经销商以使生活更轻松。再次感谢大家的贡献
【解决方案2】:

我相信您只需要使用 RewriteCond 和 RewriteRule 指令。查看http://httpd.apache.org/docs/1.3/misc/rewriteguide.html 的“虚拟用户主机”。 逻辑是一样的。 (我认为。)

【讨论】:

    猜你喜欢
    • 2015-09-27
    • 2011-09-13
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 2012-12-17
    • 2012-12-12
    • 2021-12-20
    • 1970-01-01
    相关资源
    最近更新 更多