【问题标题】:Can I use Apache fallbackresource and rewrite at the same time?我可以同时使用 Apache fallbackresource 和 rewrite 吗?
【发布时间】:2020-07-27 17:06:58
【问题描述】:

我有一个使用默认 .htaccess mod_rewrite 规则的现有 WordPress 网站。

现在我想在站点自己的子目录中使用前端控制器向站点添加一些单独的 PHP 代码。我在 Apache vhost 配置中使用 fallbackresource 指令来执行此操作,并最终得到:

# New PHP front-controller based config
<directory "/srv/www/example.com/public/admin/products">
  AllowOverride None
  FallbackResource /admin/products/index.php
</directory>

# WordPress config
<directory "/srv/www/example.com/public">
  AllowOverride All
</directory>

几乎有效!对/admin/products 的请求确实正确执行/admin/products/index.php——它输出产品列表。但是,以/admin/products/{prod-id} 形式指向特定产品的链接最终会传递给 WordPress 的 /index.php 脚​​本,这给了我一个 WordPress 生成的 404。

我可以通过使 WordPress 内容也使用 fallbackresource 指令而不使用 .htaccess 或重写规则来解决此问题,但我更愿意让 WordPress 位保持原样工作。

# WordPress config
<directory "/srv/www/example.com/public">
  AllowOverride None
  FallbackResource /index.php
</directory>

谁能解释为什么重写规则似乎优先于fallbackresource 指令?

【问题讨论】:

    标签: apache apache-config


    【解决方案1】:

    回答我自己的问题:是的,我可以同时使用 Apache fallbackresource rewrite 规则。

    它不适用于给出的示例的原因是因为 WordPress .htaccess 重写规则正在捕获 所有 请求,包括我希望由我自己的前端控制器处理的请求,例如GET /admin/products 被.htaccess 重写规则捕获并传递给/index.php

    最后我决定坚持使用 WordPress 的 fallbackresource 指令,并且我使用 AllowOverride None 来防止 .htaccess 被使用。

    【讨论】:

      猜你喜欢
      • 2011-07-21
      • 2015-05-19
      • 2019-05-21
      • 2021-09-05
      • 2014-04-08
      • 2020-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多