【问题标题】:Debugging SEO friendly URLs with mod rewrite使用 mod rewrite 调试 SEO 友好的 URL
【发布时间】: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


【解决方案1】:

保持简单并使用此规则:

RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteRule ^([\w-]+)/?$ index.php?blogurl=$1 [QSA,L]

[\w-] 将匹配 [a-zA-Z0-9_-] 字符。

【讨论】:

  • 那是完美的,正是我想做的。非常感谢!
猜你喜欢
  • 2017-11-08
  • 1970-01-01
  • 1970-01-01
  • 2011-09-23
  • 2019-04-30
  • 2015-01-04
  • 2015-12-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多