如果url有参数,则htaccess重定向

时间:2016-08-18 12:18:29

标签: php .htaccess

我搜索了它。但我无法找到我需要的东西。

我有一个像

的网址
  

mydomain.com/1hr6rry5

目前,当用户点击此链接时,他将实际进入

  

mydomain.com/profile.php?id=1hr6rry5

如果网址像mydomain,他会去

  

mydomain.com/home.php

我的意思是当url有一个参数时他会去profile.php,当没有参数时他会去home.php。

到目前为止,我正在使用php进行重定向,这看起来很慢。我希望通过使用htaccess来加快速度。

我该怎么做?

我的htaccess

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+)/?$ profile.php?id=$1 [L]

我的index.php用于重定向

<?php

if(empty($_GET['act_id']))
{
    header('Location: home.php');
    exit();
}

header('Location: profile.php?id='.$_GET['act_id']);

?>

4 个答案:

答案 0 :(得分:0)

您正在寻找规则

from collections import Counter

l1 = [1, 2, 2, 3]
l2 = [2, 3]

counter_l1 = Counter(l1)
counter_l2 = Counter(l2)

res = counter_l1 - counter_l2

print(sorted(res))
>> [1, 2]

在您的规则中包含此内容,因为您网站的每个请求都会重定向到home.php,如果遗漏了某些内容,请提供详细信息。

答案 1 :(得分:0)

仅使用Apache配置(然后是.htaccess),您可以尝试:

  1. 网址重写:

    <IfModule mod_rewrite.c>
      RewriteEngine On
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^(.*)$ profile.php?id=$1 [L,QSA]
    </IfModule>
    
  2. 要将“home.php”定义为您网站的登录页面(或索引),请打开您网站的Apache配置文件(例如,default.conf或apache2.conf或httpd.conf) :

    <Directory /path/to/your/webproject>
        DirectoryIndex home.php index.php index.html
    </Directory>
    

答案 2 :(得分:0)

您可以使用以下规则

DirectoryIndex home.php
RewriteEngine on

RewriteRule ^([./]+)$ /profile.php?id=$1 [L]

答案 3 :(得分:-2)

尝试包含该页面:

    if(empty($_GET['act_id']))
{
    include ('home.php');
} else {

include ('profile.php');

}