.htaccess 使 URL 对搜索引擎友好


.htaccess to make urls friendly to search engine

我已经搜索了一些解决问题的方法,我找到了这个链接。但它不符合我的问题。我目前正在使用 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 脚本的新手,所以我不知道这个脚本对我意味着什么,即使我从谷歌得到了一些建议。

谢谢。

有不同类型的体系结构。

最常见的是 mod_rewrite .使用一组RewriteRule,您可以根据需要重定向流量。

这方面的一个例子是:

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

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

另一种方法是使用前端控制器模式。您的所有流量都会通过一个位置(例如 index.php)进行过滤。如果您运行的是 Apache 2.2.17 或更高版本(如今大多数服务器都是这样),您可以使用 FallbackResource 在一行中执行此操作。

例如:

FallbackResource /index.php

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

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

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