使用htaccess进行重定向

时间:2013-03-28 20:29:42

标签: php .htaccess redirect

我使用以下代码将所有页面从.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/
所有我的俱乐部数据都将在数据库中,包括网址字段中的链接。

我可以使用以下代码获取此信息。然而,当我使用$ _GET ['club']方法回应时,它显示的是my-club.php,而不仅仅是我的俱乐部。

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

url中的结尾/似乎变为.php

3 个答案:

答案 0 :(得分:2)

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

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

我将尾部斜杠添加到第一个规则,因为我猜这是模式的一部分。如果我错了,你可以删除它。

如果您要附加原始请求网址中的任何查询字符串,则应将QSAL一起使用,因此[L,QSA]

答案 1 :(得分:0)

我过去曾经使用过这个并且工作正常。

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

其中$ _GET ['club_name'] =“my_club”,你的网址看起来像

http://www.site.com/clubs/my_club/

答案 2 :(得分: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