Apache 漂亮网址&;搜索引擎优化友好的网址?
我目前正在使用Apache2.2 我可以做一些简单的事情,比如Apache 漂亮网址&;搜索引擎优化友好的网址?,apache,mod-rewrite,seo,Apache,Mod Rewrite,Seo,我目前正在使用Apache2.2 我可以做一些简单的事情,比如 RewriteRule ^/news$ /page/news.php [L] RewriteRule ^/news/(.*)$ /page/news.php?id=$1 [L] 但是如果我想发送两个这样的参数呢 最后,我还想知道如何实现像stackoverflow这样的SEO友好URL 虽然我可以访问URL为的页面 只是用 用示例片段给我一些建议。注意,他们更喜欢news.php?id=$1而不是news/$1,因为这样更容
RewriteRule ^/news$ /page/news.php [L]
RewriteRule ^/news/(.*)$ /page/news.php?id=$1 [L]
但是如果我想发送两个这样的参数呢
最后,我还想知道如何实现像stackoverflow这样的SEO友好URL
虽然我可以访问URL为的页面
只是用
用示例片段给我一些建议。注意,他们更喜欢news.php?id=$1
而不是news/$1
,因为这样更容易检测变量。当增加变量数量时,这一点更为重要,因为仅看第一个示例就有点令人困惑:
http://www.example.com/link/param1/param1_value/param2/param2_value
如果有一个参数是通用的(如类别),则始终可以将这两个参数组合在一起:
http://www.example.com/param1/?id=param2_value
如果需要多个参数,并且不是临时搜索,那么应该重新评估设计。我知道PHP symfony框架允许您这样做 它是如何工作的: 在apache配置中,使用mod_rewrite将所有传入的重新请求重定向到单个入口点(在symfony中称为“前端控制器”)
重新启动发动机
重写规则^(.*)$index.php[QSA,L]
在这个前端控制器中,您将创建一个“请求”对象,它保存URL提供的所有信息
例如,您可以说“/”后面的第一件事是要调用的PHP文件的名称,其他所有内容都是参数和值,以便:
将调用id为2的file.php
要做到这一点,只需使用一些regexp并仔细设计“Request”类。对于上面的示例,“Request”类应该同时提供getRequestAction()和getParameter(字符串参数)方法。当完全填充“Request”对象以调用正确的文件/操作/方法时,将使用getRequestAction()方法
如果选择使用URL上的reg exp和对_GET数组的解析来填充请求对象的参数数组,则可能会出现以下情况:
与
(两者都可以工作)
您可以选择忽略扩展(http://example.com/file.html 是否与相同)
最后,对于某些URL,您可以选择忽略最后一个“/”之后的所有内容。因此:与
在不同的file.php中,只需使用$request->getParameter('id')来获取“id”参数的值,而不是使用_get或_POST数组
重点在于
希望这能有所帮助实际上谷歌希望非必要参数使用变量。如果参数定义了您正在检索的内容(而不是像会话id那样在不改变页面的情况下改变),那么友好的url仍然有效better@boomhauer请参阅我添加的链接:“尽管我们能够正确处理此URL,但我们仍不鼓励您使用此重写,因为它很难维护,需要在原始动态URL中添加新参数后立即更新。“是的,没错。。。但是他们的索引器对友好url的处理要比不友好的要好得多,所以我想证据是:)有人举过这样的例子吗?我希望实现这种类型的配置,但对于“file.php”文件中的代码实际外观,我有点茫然。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>