如何使用php创建SEO友好搜索



这是我在网站中使用的一个搜索脚本。此搜索文件保存在主目录中作为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或其他方法来做到这一点?

通过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]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*.php$ %{REQUEST_FILENAME}.php [L, QSA]

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

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

最新更新