【问题标题】:How Create SEO friendly search with php?如何使用 php 创建 SEO 友好搜索?
【发布时间】:2013-09-04 02:28:01
【问题描述】:

这是我在我的网站中使用的搜索脚本。这个搜索文件作为 search.php 保存在主目录中

<?php


    $searchTerm = trim($_GET['q']);
    $searchlink = str_replace(" ","_",$searchTerm);
    $id = trim($_GET['q']);
    if($searchTerm == "")
    {
        echo "Enter name you are searching for.";
        exit();
    }

    $host = "localhost"; //server
    $db = "db"; //database name
    $user = "user"; //dabases user name
    $pwd = "ss1122"; //password
    $link = mysqli_connect($host, $user, $pwd, $db);
    $query = "SELECT * FROM mytable As a JOIN mytable2 As b ON a.mycolumn=b.mycolumn WHERE a.mycolumn LIKE '%$searchlink%'";
    $results = mysqli_query($link, $query);
    print "<div class=\"box-title\" style=\"border-bottom:1px solid #efefef; padding-bottom:10px; margin-bottom:5px;\">You Searched for \"$searchTerm\"</div>";
    print "<div class=container><div class=container-top><div class=container-bottom>";
    if(mysqli_num_rows($results) >= 1)
    {
        $output = "";
        while($row = mysqli_fetch_array($results))
        {
        $output .= "<h4><a href="$row['mycolum'] . "/>Search result</a></h4>";  

        }
        echo  $output;
    }
    else
        echo "There was no matching record for the name " . $searchlink;

    ?>

当用户搜索“免费”时,链接变为http://mysite.com/search.php?q=free

虽然我希望这个搜索链接变成http://mysite.com/search?q=free

我们如何使用 .htaccess 或其他方法做到这一点?

【问题讨论】:

标签: php .htaccess


【解决方案1】:
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [L, QSA]

【讨论】:

    【解决方案2】:

    通过httpd.conf启用mod_rewrite和.htaccess,然后把这段代码放到你.htaccessDOCUMENT_ROOT目录下:

    Options +FollowSymLinks -MultiViews
    # Turn mod_rewrite on
    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+(search)\.php(\?q=[^&\s]+) [NC]
    RewriteRule ^ /%1%2 [R=301,L]
    
    RewriteRule ^(search)/?$ /search.php [L,QSA,NC]
    

    【讨论】:

    • 运行良好。但是有一个问题,链接包含重复关键字,即 search?q=free&q=free
    【解决方案3】:

    您可以将.htaccess 与例如重写规则一起使用

    RewriteEngine on
    RewriteBase /
    RewriteRule ^search?q=(.*)$ search.php?q=$1 [QSA,L]
    

    【讨论】:

    • 这不起作用,因为 RewriteRule 不包含查询字符串!查询字符串需要与单独的RewriteCond %{QUERY_STRING} 匹配。
    猜你喜欢
    • 2015-11-03
    • 2015-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-04
    • 2011-06-11
    • 1970-01-01
    • 2010-12-27
    相关资源
    最近更新 更多