【问题标题】:htaccess invisibly rewrite folderhtaccess 隐形重写文件夹
【发布时间】:2016-01-14 19:54:44
【问题描述】:

我在目录 /html/ 中的一台服务器上有多个具有不同内容的域,该目录为所有域提供服务,例如 example1.com、example2.com、example3.com、example4.com。

这很好用。

我现在需要 2 个不同的(!)wordpress 安装。从外面我想拥有:

example1.com -> No Blog
example2.com/blog/
example3.com -> No Blog
example4.com/blog/

服务器上的内部路径结构应如下所示:

/html/
/blog-for-server2/
/blog-for-server4/

因为否则 /html/ 中的内容管理系统会搞砸。事实上,这几乎就像为博客拥有独立的子域并将它们指向服务器上的不同路径(但我不想使用子域)。

有什么想法吗?

【问题讨论】:

  • 要么在 Apache 的 httpd-vhosts.conf 文件中的 VirtualHost 指令中设置 RewriteRules,要么在根 .htaccess 文件中使用 RewriteCond (如 @987654325)进行大量重定向@

标签: php wordpress apache .htaccess mod-rewrite


【解决方案1】:

假设您已经在 Apache 的 httpd-vhosts.conf 文件中创建了域,您可以在其中创建重定向,例如:

<VirtualHost *:80>
    ServerName example1.com
    DocumentRoot /home/servers/common_root/html

    RewriteEngine On
    RewriteRule ^/blog/? /blog-for-server-1
</VirtualHost>


<VirtualHost *:80>
    ServerName example2.com
    DocumentRoot /home/servers/common_root/html

    RewriteEngine On
    RewriteRule ^/blog/? /blog-for-server-2
</VirtualHost>

否则你可以在根目录中进行 .htaccess 但这很麻烦:

RewriteEngine On

RewriteCond %{SERVER_NAME} =example1.com
RewriteRule ^blog /blog-for-server-1

RewriteCond %{SERVER_NAME} =example2.com
RewriteRule ^blog /blog-for-server-2

【讨论】:

  • 感谢您的回复。我无权访问 httpd-vhosts.conf 文件,因此我尝试将其添加到 htaccess 中。问题似乎是 /blog-for-server-2 总是相对于 Doc-Root /html/,因此如果此路径与 Doc-Root 处于同一级别,则它不起作用。
  • 如果它与 docroot 处于同一级别(或更高级别),则无法通过 .htaccess 执行此操作(因为您无法访问文件系统)......并且您没有访问权限到 httpd-vhosts.conf 我很确定唯一的选择是移动 docroot 下的 /blog-for-server... 目录并使用 .htaccess 处理重定向。
猜你喜欢
  • 2013-04-02
  • 2015-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-27
  • 2011-09-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多