我有一个现有的WordPress站点,使用默认的.htaccess mod_rewrite规则。
现在,我想使用它自己的子dir中的前端控制器向站点添加一些单独的PHP代码。我在Apache配置中使用了一个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。
我可以通过让WordPress也使用fallbackresource指令来解决这个问题,而不是使用.htaccess或重写规则,但我更愿意让WordPress比特继续工作。
# WordPress config
<directory "/srv/www/example.com/public">
AllowOverride None
FallbackResource /index.php
</directory>有人能解释为什么重写规则似乎优先于fallbackresource指令吗?
发布于 2020-11-07 21:41:11
要回答我自己的问题:是的,我可以同时使用Apache fallbackresource和rewrite规则。
它不能使用给出的示例的原因是WordPress .htaccess重写规则捕获了所有的请求,包括我自己的前端控制器想要处理的请求,例如GET /admin/products被.htaccess重写规则捕获并传递给/index.php。
最后,我决定坚持使用fallbackresource的WordPress指令,并使用AllowOverride None来防止使用.htaccess。
https://stackoverflow.com/questions/63120116
复制相似问题