htaccess为第一条规则而不是第二条规则工作

时间:2012-06-12 10:02:13

标签: php mysql .htaccess

我有2页Advertisement.php和Gidc.php,如果他们有user =“some value”他们会工作 例如:

example.com/advertisement_final_page.php?user=sumeet

example.com/gidc_final_page.php?user=nikhil

我希望htaccess的代码将其重定向到上面的页面:

example.com/sumeet

example.com/nikhil

我的数据库是:

id 1

输入广告

用户 sumeet

联络 651651

所有者 Sumeet Patel

网站 asdfkjh.com

电子邮件 sdfjh@skdj.com

地址 skjdf,sd,sdh

id 2

输入 Gidc

用户 nikhil

联络 651651

所有者 Nikhil Patel

网站 sadfjh.com

电子邮件 sdf@sdhf.com

地址 skjdf,sd,sdh

我的htaccess规则:

Options +FollowSymlinks
RewriteEngine on

RewriteRule ^([a-zA-Z0-9_-]+)$ advertisement_final_page.php?user=$1
RewriteRule ^([a-zA-Z0-9_-]+)$ gidc_final_page.php?user=$1

但是通过上面的代码,它会到达advertisement_final_page.php页面。 就像我输入

一样
example.com/nikhil

重定向到

example.com/advertisement_final_page.php?user=nikhil

2 个答案:

答案 0 :(得分:2)

规则中的模式似乎完全相同。 RewriteEngine将匹配它可以的第一个​​规则,在这种情况下是第一个规则。

您应该编写一个控制器文件,将所有请求重定向到。然后从$_GET['user']读取所需的用户,从数据库中读取用户的数据,并根据用户的Type重定向/包含相应的PHP文件。

答案 1 :(得分:1)

只有先前的比赛错误,才会处理您的第二场比赛。在这种情况下,两者都是相同的,第一个总是为TRUE。因此,加载advertisement_final_page.php?user=nikhil,并跳过剩余的行。

你可以告诉你真正想要达到的目标,让我们指导你。 : - )

<强> ------------------------编辑------------------- -----

根据您的需要,您可以执行以下操作:

RewriteRule ^([a-zA-Z0-9_-]+)$ redirect.php?user=$1

在redirect.php中,你可以写:

$u = $GET['user'];

if( $u == 'sumeet'){
   header('location: advertisement_final_page.php?user=sumeet');
} else if ( $u == 'nikhil') {
   header('location: gidc_final_page.php?user=nikhil');
}

但请理解此代码不是标准代码。为了使代码更好,您需要在数据库中检查$user,然后相应地重定向,而不是使用if()比较所有名称。

为此,您可以使用表格,如下所示:

+------------+---------------------------------------+
|  username  |             redirect_url              |
+------------+---------------------------------------+
|   nikhil   |       gidc_final_page.php?user=       |
+------------+---------------------------------------+
|   sumeet   |  advertisement_final_page.php?user=   |
+------------+---------------------------------------+
|    alice   |       gidc_final_page.php?user=       |
+------------+---------------------------------------+
|     ....   |                  ....                 |
+------------+---------------------------------------+

我希望这会帮助你: - )