开发者

mode rewrite general rule to hide dynamic url elements?

Here's what I have:

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

This is wha开发者_如何转开发t I would like:

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

Also is it possible to hide the number part in htaccess so it looks like this:

www.name.com/category/hello-kitty

Here's my current code:

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

Obviously, the last line is not working.

Can I call in general to have all ?anything= to be replaced by a / like the example above?


My thoughts:

  • Hiding the number will require some SQL changes. This is because you no longer have the ID available to you, now you have to query the database to get it.
  • I would use www.name.com/category/111/hello-kitty/ for my URL. The reason is that this way you can systematically parse each portion. Notice that this is also what StackOverflow is using. The following RewriteRule assumes that category and the section for hello-kitty contains only alphanumeric symbols and a dash (a common practice):

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


Do something like this:

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

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜