apache - 我可以同时使用 Apache fallbackresource 和 rewrite 吗?
问题描述
.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
指令?
解决方案
回答我自己的问题:是的,我可以同时使用 Apachefallbackresource
和 rewrite
规则。
它不适用于给出的示例的原因是因为 WordPress .htaccess 重写规则正在捕获所有请求,包括我希望由我自己的前端控制器处理的请求,例如GET /admin/products
被 .htaccess 重写规则捕获并传递给 /index。 php
最后,我决定坚持使用fallbackresource
WordPress 的指令,并使用AllowOverride None
它来防止 .htaccess 被使用。
推荐阅读
- ios - 如何删除 NavigationBar 的右空间?
- javascript - Mongoose 搜索包含 _id 和聚合的数组中的项目
- javascript - Vue:从模板渲染时,SVG 元素不会在内部缩放
- python - 为什么我在熊猫中遇到属性错误?
- python - 如何使用 python sdk 将 blob 上传到带有子目录的 azure 存储容器中?
- python - VSCode 为我提供旧版本包的文档,但使用新版本的代码
- spring - 在 Spring MVC 应用程序中实现异常处理的最佳位置
- c# - 使用团队中的机器人框架向群聊发送消息
- python - 我想在 python 中循环我的文件创建者一定次数
- expression - 使用 mapbox 表达式获取要素 id