.htaccess 使 url 对搜索引擎友好

Posted

技术标签:

【中文标题】.htaccess 使 url 对搜索引擎友好【英文标题】:.htaccess to make urls friendly to search engine 【发布时间】:2012-06-18 03:02:12 【问题描述】:

我正在寻找一些解决我的问题的方法,我发现了这个link。但这不符合我的问题。我目前正在使用 php 构建一个网站,并且我已经在 url 中使用了查询字符串。例如,我有很多这样的网址:

www.example.com?page=something
and also
www.example.com?page=something&action=anything

我只想拥有:

www.example.com/something
and
www.example.com/something/anything

我也是 .htacess 脚本的新手,所以即使我从 Google 得到了一些建议,我也不知道该脚本对我意味着什么。

谢谢。

【问题讨论】:

【参考方案1】:

为此有不同类型的架构。

最常见的是mod_rewrite。使用一组RewriteRule,您可以随心所欲地重定向流量。

这方面的一个例子是:

RewriteEngine On
RewriteBase /

RewriteRule ^([^/]+)(?:/([^/]+))? index.php?page=$1&action=$2 [L]

但是,这些规则的管理可能会变得复杂。在您的情况下,您必须为 URL 创建另一个规则,例如:/some/other/page

另一种方法是使用Front-end Controller Pattern。您的所有流量过滤器都通过一个位置(例如 index.php)进行路由。如果您运行的是 Apache 2.2.17 或更高版本(现在大多数服务器都是这样),您可以使用 FallbackResource 在一行中执行此操作。

例如:

FallbackResource /index.php

【讨论】:

使用它时,我发现我的网站不再有样式或效果。当我查看源代码时,我点击 CSS 源链接,然后我被重定向到同一个地方,我在 firebug 中也看到了这个。 是的,RewriteRule 将获取所有流量。这大概就是问题所在。我建议改用FallbackResource【参考方案2】:

这是一个相当基本的 mod_rewrite 重写。像这样的东西应该可以完成这项工作:

RewriteEngine On
RewriteRule ^([^/]+)(?:/([^/]+))? index.php?page=$1&action=$2 [L]

表达式([^/]) 表示将所有内容匹配到下一个/(?:/([^/]+))? 包含相同的模式,但被非捕获组 (?:/ )? 包围,这使得整个第二组是可选的。

【讨论】:

以上是关于.htaccess 使 url 对搜索引擎友好的主要内容,如果未能解决你的问题,请参考以下文章

SEO工具箱:PHP自动生成PHPCMS伪静态规则.htaccess

在htaccess中重写URL时添加.html?

如何使用 .htaccess 和 php 制作用户友好的 url

用于检查网站是不是具有搜索引擎友好 URL 的 Ruby 代码

htaccess url 重新样式化图像 url 到 seo 友好

Laravel:将输入查询的结果更改为友好URL