1

我正在使用以下代码将我的所有页面从 .php 更改为简单的 /

RewriteRule ^(.*)/$ $1.php [L]

现在出现 www.site.com/clubs/ 或 www.site.com/training/ 而不是 www.site.com/clubs.php 和 www.site.com/training.php

现在在俱乐部中,我想显示俱乐部(使用数据库中的数据),页面将显示为 www.site.com/clubs/my-club/
所有 my-club 数据都将在数据库中,包括 a 中的链接网址字段。

我可以用下面的代码得到这个。但是,当我使用 $_GET['club'] 方法回显时,它会显示 my-club.php 而不仅仅是 my-club。

RewriteRule ^clubs/([^/]*)$ clubs.php?url=$1 [L]

url 中的结尾 / 似乎变成了 .php

4

2 回答 2

2

您可以通过不同的方式实现您的需求,但这就是我的做法。更改规则顺序,如下所示:

RewriteRule ^clubs/([^/]*)/$ clubs.php?url=$1 [L]
RewriteRule ^(.*)/$ $1.php [L]

我在第一条规则中添加了斜杠,因为我猜它是模式的一部分。如果我错了,您可以将其删除。

如果您想从原始请求 URL 中附加任何查询字符串,您应该QSA与 一起使用L,所以[L,QSA]

于 2013-03-28T20:41:15.803 回答
0

试试这个:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([0-9a-zA-Z\-]+?)/([0-9a-zA-Z\-]+?)?$ $1.php?url=$2

你在跑什么:

http://localhost/club/

结果将是

http://localhost/club.php

你在跑什么:

http://localhost/club/my-club

结果将是

http://localhost/club.php?url=my-club
于 2013-03-28T20:48:40.137 回答