Apache RewriteRule重写子目录不起作用

时间:2019-12-24 18:50:07

标签: linux apache

我需要重写以下URL结构:

pyarrow

收件人:

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

我添加了这个RewriteCond和RewriteRule,但是我无法使其正常工作。

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

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

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

我还是Linux和Apache的新手,因此我的故障排除技能受到限制。我尝试搜索error_log文件,并使用此命令通过grep将所有重写条目传递给管道,但是没有日志条目。当我点击要重写的URL时,我正在实时观看日志。

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

直接来自Apache用户手册。

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

1 个答案:

答案 0 :(得分:0)

您实际上有几个问题。看来您要将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来查看其效果是否更好。