【问题标题】:htaccess working for first rule but not second onehtaccess 适用于第一条规则,但不适用于第二条
【发布时间】:2012-06-12 10:02:12
【问题描述】:

我有 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

用户尼基尔

联系 651651

所有者尼基尔·帕特尔

网站 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

但是通过上面的代码,它到达了advertising_final_page.php 页面。 就像我进入

example.com/nikhil

它重定向到

example.com/advertisement_final_page.php?user=nikhil

【问题讨论】:

    标签: php mysql .htaccess


    【解决方案1】:

    您的规则中的模式似乎是相同的。 RewriteEngine 将匹配它可以匹配的第一个规则,在本例中为第一个。

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

    【讨论】:

    • 正是我使用 GET 检查表中的 user="" 然后只加载页面。但是如果有人写 example.com/nikhil 它应该去 example.com/gidc_final_page.php?user=nikhil 如果有人写 example.com/sumeet 那么它应该去 example.com/advertisement_final_page.php?user=sumeet
    【解决方案2】:

    只有在之前的匹配错误时才会处理您的第二场匹配。在这种情况下,两者都是相同的,并且第一个始终为 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,然后相应地重定向,而不是使用@987654325 @ 比较所有名称。

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

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

    我希望这会对你有所帮助:-)

    【讨论】:

    • advertisement_final_page.php 和 gidc_final_page.php 是两个不同的页面,它们从同一个表中获取信息。如果在链接中设置了用户变量,那么它会从表中检查并根据类型列获取数据。现在,如果有人写 example.com/nikhil,它应该转到 example.com/gidc_final_page.php?user=nikhil,如果有人写 example.com/sumeet,那么它应该转到 example.com/advertisement_final_page.php?user=sumeet
    猜你喜欢
    • 2020-12-02
    • 2017-01-07
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 2013-01-09
    • 2019-01-09
    • 2019-09-08
    • 2011-08-15
    相关资源
    最近更新 更多