斜杠而不是$ _GET变量

时间:2013-04-19 20:01:41

标签: php .htaccess url

我知道这是一个已经回答过的问题。问题是我不知道我做错了什么,但当我粘贴在另一个中找到的代码时:

RewriteEngine On
RewriteRule ^([^/]+)/([^/]+)$  index.php?$1=$2
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)$  index.php?$1=$2&$3=$4
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$  index.php?$1=$2&$3=$4&$5=$6

......没有任何反应。

我只是希望网址变得像:www.foo.com/it/5 而不是www.foo.com?it=5

感谢您的帮助!

1 个答案:

答案 0 :(得分:2)

这不会重写看到的网址,它会重写 Apache 看到的规则。

而且,这些规则很荒谬。我建议更简单的东西:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f  #skip if file exists
RewriteCond %{REQUEST_FILENAME} !-d  #skip if directory exists
RewriteRule ^(.*)$ index.php?rt=$1 [L,QSA]

当有人要求时:

http://foo.com/fancy/url/here

Apache将其[内部]更改为:

http://foo.com/index.php?rt=fancy/url/here

你的PHP脚本看到了:

$_GET['rt'] == 'fancy/url/here';

然后你可以:

$arr = explode('/', $_GET['rt']);

得到:

$arr == array('fancy','url','here')