我想要实现的一个例子,我想重写
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
非常感谢
答案 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以获取更多信息。 很多像这样的问题。