【发布时间】:2018-09-20 12:04:09
【问题描述】:
我觉得我对 mod 重写有很好的处理,但我似乎无法让这个工作。
我的设置:如果页面确实存在(即contact.php),则加载“真实”页面。否则,假设该 url 是具有 SEO 友好 url 的博客条目,并将该 url 作为查询字符串提供给我的索引页面。
示例:http://www.example.org/my_latest_post 应重写为 http://www.example.org/index.php?blogurl=my_latest_post
如果我将“丑陋”的网址粘贴到浏览器中,页面加载正常。但是如果我运行 SEO 友好的 url,我会得到可怕的 404。
我的 htaccess 文件现在实际上很轻。一些缓存内容,将 XML 管道传输到 PHP(用于动态 RSS 提要),自定义 404 文档。
这里是相关的 mod_rewite 东西:
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^(([A-Za-z0-9]+[-]+[A-Za-z0-9]+)+[/])$ index.php?blogurl=$1 [NC,L]
据我了解,我的意思是,如果文件名是实际文件或目录的一部分,那么就让它保持不变。我的其他页面都正常工作,所以这似乎工作。
然后,应假定其他所有内容都是 SEO url 的一部分,并传递给 index.php?blogurl=[the url]。
但这不起作用。
我忽略了什么愚蠢的显而易见的事情
感谢您的帮助!
【问题讨论】:
-
模式不匹配,使用regex101.com检查
-
本,我认为模式不匹配。我希望在这方面有所帮助?
标签: .htaccess mod-rewrite