Linux 用于重写子目录的Apache重写规则不起作用

Linux 用于重写子目录的Apache重写规则不起作用,linux,apache,Linux,Apache,我需要重写以下URL结构: http://website.com/business-directory/25/administration/ 致: 我添加了“重写条件”和“重写规则”,但我无法使其正常工作 RewriteCond %{HTTP_HOST} website.com RewriteRule ^business-directory/.*/(.*)/$ /departments/$1/ 我一直在使用这个在线工具进行测试,并获得了成功的结果。但我不知道他们验证规则的工具背后的逻辑 ht

我需要重写以下URL结构:

http://website.com/business-directory/25/administration/
致:

我添加了“重写条件”和“重写规则”,但我无法使其正常工作

RewriteCond %{HTTP_HOST} website.com
RewriteRule ^business-directory/.*/(.*)/$ /departments/$1/
我一直在使用这个在线工具进行测试,并获得了成功的结果。但我不知道他们验证规则的工具背后的逻辑

https://htaccess.madewithlove.be?share=11bb2f4c-7d70-5ee9-9551-2d81d5a5d340
我还不熟悉Linux和Apache,所以我的故障排除技能有限。我曾尝试使用此命令搜索错误日志文件,并使用grep将所有重写条目导入,但没有日志条目。当我点击应该被重写的URL时,我正在实时观察日志

tail -f error_log|fgrep '[rewrite:'
这直接来自Apache用户手册


我正在运行的堆栈是Bitnami Wordpress Multisite。

您实际上遇到了几个问题。看起来您想将
业务目录/NN/name/
转换为
部门/name/
。正如我所说的,你需要在部门名称后面加一个正斜杠。这很好,但它只会重写与
business directory/NN/name/
的精确匹配,并会在
business directory/NN/name/whosdead.html
中失败。如果要转换所有URL,则需要捕获部门名称的任何内容:

RewriteRule^business directory/*?/(.*?)(/.+?)?$/departments/$1$2

转换<代码>http://website.com/business-directory/62/coroner至
http://website.com/departments/coroner

转换<代码>http://website.com/business-directory/62/coroner/至
http://website.com/departments/coroner/

转换<代码>http://website.com/business-directory/62/coroner/whosdead.html至
http://website.com/departments/coroner/whosdead.html


验证重写引擎是否正在处理您的规则后,请尝试此重写,以查看它是否工作得更好。

服务器上是否启用了mod_rewrite?jeprubio是正确的,请验证mod_rewrite是否已启用,以及RewriteEngine是否设置为“开”。那个测试工具很棒,顺便说一句,NFN,但你们知道你们的重写条件需要一个尾随的正斜杠吗?如果没有,您的重写将失败。这就是你想要的吗?我知道引擎设置为“开”。我现在正在验证mod_重写。我假设它已启用,因为bitnami堆栈已将规则条目重写为默认配置的一部分。至于第二条,“我认为”这是我想要的,但也许我误解了这个问题。在写这篇文章之前,我已经评论过重写是经过测试的。结果是相同的。抱歉,重写规则需要一个尾随正斜杠。是,需要尾随正斜杠。URL在浏览器中的显示方式为正斜杠。我已经测试了它有和没有,结果仍然是一样的。我现在正在测试这个。我认为你对规则的重写会更符合我的需要。这个问题仍然存在,但我认为这不是规则。我认为是Wordpress重写规则导致了这个问题。我现在正在研究日志,看看是否能找到阻止这种情况发生的方法。如果你找到了解决方案,一定要发布解决方案。我对WP重写规则很好奇。
tail -f error_log|fgrep '[rewrite:'