模式重写一般规则隐藏动态url元素?

时间:2011-10-04 23:36:25

标签: php .htaccess mod-rewrite

这就是我所拥有的:

www.name.com/category.php?title=111-hello-kitty

这就是我想要的:

www.name.com/category/111-hello-kitty

也可以隐藏htaccess中的数字部分,所以它看起来像这样:

www.name.com/category/hello-kitty

这是我目前的代码:

RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]+\s.+\.php\sHTTP/.+
RewriteRule ^(.+)\.php$ /$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

RewriteRule ^([^/.]+)$ /?title=$1

显然,最后一行不起作用。

我是否可以一般打电话让所有?anything=替换为上述示例?

2 个答案:

答案 0 :(得分:1)

我的想法:

  • 隐藏号码需要进行一些SQL更改。这是因为您不再拥有可用的ID,现在您必须查询数据库才能获得它。
  • 我会将www.name.com/category/111/hello-kitty/用于我的网址。原因是这样您就可以系统地解析每个部分。请注意,这也是StackOverflow正在使用的内容。以下RewriteRule假定categoryhello-kitty的部分仅包含字母数字符号和破折号(通常的做法):

RewriteRule ^([A-Za-z0-9-]+)/([0-9]+)/([A-Za-z0-9-]+)/?$ /$1.php?title=$2-$3

#although I'd recommend that you really do this:
RewriteRule ^([A-Za-z0-9-]+)/([0-9]+)/[A-Za-z0-9-]+/?$ /$1.php?id=$2

答案 1 :(得分:0)

做这样的事情:

RewriteRule ^ category(/.+)?$ /category.php [L]