2012-04-27 22 views
0

我该怎么做?关于这个问题有很多话题,但我尝试了所有这些话题,但都没有成功。有人可以给我一个详尽而广泛的答案,因为我几乎没有使用.htaccess的经验。如何将site.com/index.php?p=xxx转换为site.com/xxx/

谢谢!

+1

使用Apache重写规则 – vvr 2012-04-27 10:42:27

+0

htaccess mod重写 – 2012-04-27 10:43:23

+0

有很多很多的教程 - 关于Google的关键词是[“search engine friendly urls”](http://www.google.com/search?q=search+engine+friendly+urls) – DaveRandom 2012-04-27 10:43:39

回答

1

从头脑,所以可能需要一些调整

RewriteEngine on 
RewriteRule ^([^.]*)/?$ index.php?p=$1 [L] 

这将(内部!)发送到site.com/xxx /site.com/index.php?p=xxx

所以你可以做的index.php任何你想要用$ _GET [“p”],你通常会做,但用户将看到该网站为index.site.com/xxx

+0

谢谢。这工作,但有没有办法让它的工作有或没有尾随斜线? 另外,相反的规则是什么?如果人们填写index.php?p = xx,他们会自动发送到/ xx /? – user1306458 2012-04-27 10:55:27

+0

以及,我将如何更改page.php?cat = x&page = 3&sortby = bla到/ page/x/3/bla /? – user1306458 2012-04-27 10:57:01

+0

与上面的解决方案,site.com/page/x3/bla将被内部重写为site.com/index.php?p=page/x3/bla所以通过爆炸('/',$ _GET ['p '])你得到所有的参数。只要确保你的url结构是一致的。你可以写一个类似的RewriteRule来处理URL的url = ...但是没有真正的理由。 – Johan 2012-04-27 12:06:07

1
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 

RewriteRule (.*)/ index.php?p=$1 
相关问题