Mod_rewrite动态URLS

时间:2011-06-04 10:06:47

标签: mod-rewrite

我想要实现的一个例子,我想重写

  

www.website.com/index.php
  www.website.com

  

www.website.com/index.php?page=first
  www.website.com/first

但也

  

www.website.com/index.php?category=cat&page=second
      www.website.com/cat/second

非常感谢

2 个答案:

答案 0 :(得分:3)

100%确定要以这种方式进行重写吗?看起来这通常是你通常设置重写的方式。查看 this question first answer ,看看我的意思。

我会想出一个问题,也许你想让浏览器中的网址看起来像:

http://www.website.com/cat/second

并且您希望 php应用然后接收

http://www.website.com/index.php?category=cat&page=second

在这种情况下,你会想要像

这样的东西
 <IfModule mod_rewrite.c>
RewriteEngine On
# note this first rewrite would be redundant in 99.999% of cases, apache expects to serve index.php for the /
RewriteRule ^/$ /index.php [last]
RewriteRule ^(.*)$ /index.php?page=$1 [last]
RewriteRule ^(.*)/(.*)$ /index.php?category=$1&page=$2 [nocase,last]
</IfModule>

如果我错了,那么Ivan c00kiemon5ter V Kanak的回答对你说得对。然后我也很好奇你想要做什么样的情况“反重写”:)

答案 1 :(得分:2)

尝试这样的事情

<IfModule mod_rewrite.c>
    RewriteEngine On
    # you may want to check other uses of R
    RewriteRule ^/index.php$ / [R=301,L]
    RewriteRule ^/index.php?page=(.*) /$1 [R=301,L]
    RewriteRule ^/index.php?category=(.*)&page=(.*) /$1/$2 [R=301,L]
</IfModule>

您可以将最后两行放在一行中,播放正则表达式。 另请参阅this question,您可能需要查找ServerFault以获取更多信息。 很多像这样的问题。