Apache RewriteRule 重写子目录不起作用



我需要重写以下URL结构:

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

自:

http://website.com/departments/administration/

我添加了这个重写康德和重写规则,但我无法让它工作。

RewriteCond %{HTTP_HOST} website.com
RewriteRule ^business-directory/.*/(.*)/$ /departments/$1/

我一直在用这个在线工具进行测试,我得到了成功的结果。但我不知道他们验证规则的工具背后的逻辑。

https://htaccess.madewithlove.be?share=11bb2f4c-7d70-5ee9-9551-2d81d5a5d340

我仍然是Linux和Apache的新手,所以我的故障排除技能有限。我尝试使用此命令搜索error_log文件并使用 grep 管道所有重写条目,但没有日志条目。当我点击应该重写的 URL 时,我正在实时查看日志。

tail -f error_log|fgrep '[rewrite:'

这直接来自Apache用户手册。

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

你实际上遇到了几个问题。看起来您想将business-directory/NN/name/转换为departments/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

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

最新更新