我需要重写以下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 以查看它是否工作得更好。