【问题标题】:Different folder as website subfolder不同的文件夹作为网站子文件夹
【发布时间】:2023-12-27 00:05:02
【问题描述】:

我需要一些有关 URL 重写的帮助。情况与this one类似。

我有一个可用的 Zend Framework 站点。现在我必须在 Wordpress 中添加一个博客(也在工作)。我选择沉迷于 ZF 控制器-/动作-/路由制作;我已经看过一些关于这个的教程,我认为它们对于“普通”重定向来说太过分了。现在,关于那个“重定向”......

它应该是这样的:

  • www.site.com(指向/var/www/zf
  • www.site.com/blog(指向/var/www/wp

我知道我应该阻止 www.site.com/blog 进入 ZF 的内部,我目前正在其 .htaccess 中使用 RewriteRule ^blog - [NC,L] 执行此操作,但仅此而已。正如@jason 所说,“只需将其传递给Wordpress”,但我不知道该怎么做。

相关问题:
我从未尝试过,但 Apache 是否在 两个不同的虚拟主机中支持此功能?
ServerName www.site.com(ZF 网站的虚拟主机)
ServerName www.site.com/blog(WP 网站的虚拟主机)

【问题讨论】:

标签: apache wordpress zend-framework mod-rewrite virtualhost


【解决方案1】:

www.site.com(指向 /var/www/zf)

www.site.com/blog(指向 /var/www/wp)

实现这一点的最简单方法是创建一个别名...

在 VirtualHost 块内添加:

Alias /blog /var/www/wp

<Directory /var/www/wp>
    Options All
    AllowOverride All
    order allow,deny
    allow from all
</Directory>

*这假设您以某种方式为该目录启用了 PHP。

【讨论】:

  • 我已经在本地测试过它并且它可以工作,但是 wp 链接指向(比如说)http://localhost/wordpress/?page_id=7(有效),而不是http://local-play/blog/?page_id=7
  • 取消我之前的评论。这是因为我在 before 这个新配置之前安装了 WP。当安装为“/blog”子网址时,它工作正常。谢谢,@rightstuff。
  • 这需要启用 Apache mod_alias。 httpd.apache.org/docs/2.2/mod/mod_alias.html
  • 我正在用 laravel 项目尝试这个,它适用于*别名(即 www.site.com/blog),但不适用于别名子目录(即 www.site.com /blog/abc)
  • 也取消了我之前的评论,我设法通过将此行添加到我的 Laravel 项目的 .htaccess 文件“RewriteBase /blog”中来使其适用于子目录
【解决方案2】:

ServerName 技巧不起作用:ServerName 指令中不能有路径名。

对于 mod_rewrite,你应该能够摆脱这样的事情:

RewriteEngine on
RewriteBase /
RewriteRule ^blog/(.*)$ wp/$1 [L]
RewriteRule ^(.*)$ zf/$1 [L]

【讨论】:

  • 啊,不:您需要将它放在*文件夹中。如果您将它放在 ZF 文件夹的 .htaccess 中,您将无法影响 zf 上方的目录(例如您的博客文件夹)。