就像使用mod_rewrite的URL一样

时间:2011-05-17 18:23:27

标签: url mod-rewrite url-rewriting

我希望得到一个与SO的问题网址完全相同的网址方案。

http://stackoverflow.com/questions/6035363/so-like-url-with-mod-rewrite

可以使用http://stackoverflow.com/questions/6035363访问此页面 但随后它会重定向到http://stackoverflow.com/questions/6035363/so-like-url-with-mod-rewrite

我需要这样做 我的页面将位于名为article.php的根目录中 网址就像

article.php?id=1&title=some_text  

我想用[其中任何一个会做]

来访问它
acticle.php/id/1/some_text  

acticle/id/1/some_text  

acticle/id/1&title=some_text  

[对不起我真的不知道mod_rewrite所以我读了一些问题并搜索了一些作弊表,但没有一个工作:(
所以寻找一些复制粘贴解决方案]

1 个答案:

答案 0 :(得分:1)

最好是划分并征服URL以对其进行反向工程。

所以有几个要点:

  1. 6035363是网址的重要部分,因为它是问题ID。
  2. 其他一切都是任意的SEO,友好的URL
  3. 拥有同一页面的多个网址会损害搜索引擎优化,因此请坚持使用一种网址格式
  4. 据说,article/id/some_keyword_text是我建议的格式。以下RewriteRules将处理它。

    RewriteEngine On
    RewriteBase /
    RewriteRule ^article/(\d+)/?$ test/article.php?id=$1 [L]
    RewriteRule ^article/(\d+)/([\w-]+)/?$ test/article.php?id=$1&title=$2 [L]
    

    第一个规则使用可选的尾部斜杠重定向article/id。第二个规则使用可选的尾部斜杠重定向article/id/some_keyword_textsome_keyword_text只能包含字母数字,下划线或短划线字符。

    注意:格式article/id的网址重定向发生在页面级别。所以这不是RewriteRule,而是在未设置title时重定向的页面中的逻辑。我猜测301重定向以确保第3点。