1

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

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

...什么都没发生。

我只是希望 url 变成这样:www.foo.com/it/5 而不是 www.foo.com?it=5

感谢您的帮助!

4

1 回答 1

2

这不会重写看到的 URL,它会重写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')
于 2013-04-19T20:22:59.013 回答