我正在尝试将所有单个博客页面URL重定向到PHP模板。
/ blog / blog-post-1会说到/ blog /的index.php的路由,但将URL保留为现有数据段以提取数据。
实际上只是用于Blog文件夹的基本路由器。
但是,父文件夹/ blog /似乎也已匹配。我只希望单人/儿童页面匹配。
我尝试了多个htaccess RewriteRules,并在正则表达式检查器站点和htaccess匹配器站点上对其进行了测试。
下面的内部代码重定向实际上似乎可以在那些站点上运行,但是在我的本地主机上,它也与父页面匹配。
RewriteRule ^blog/(.+)$ / [L,NC]
这也与父页面(/ blog /)相匹配,并且还返回到主页。
但是,如果我将其作为实际重定向执行
RewriteRule ^blog/(.+)$ / [R,L,NC]
它可以按预期运行,并且仅对儿童有效。唯一的问题是它将删除现有的URL。
我希望第一个重定向能够正常工作,并且只重定向子页面,但实际上它匹配所有内容。
添加R标志并将其设置为实际重定向似乎可行。
不确定我是否缺少什么?
答案 0 :(得分:0)
打开mod_rewrite日志后,我发现apache2正在循环浏览该路径的可能网址。
因此它将检查:
博客/ blog / index.html blog / index.php
最后一个是与htaccess规则匹配的实际路径。
我将规则更新为:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^blog/(.+)$ / [L,NC]
要确保所请求的URL既不是文件也不是目录。
似乎可以完成这项工作。我确定还有其他Cond规则可能会有所帮助。