$ _GET ile mod_rewrite kullanarak

2 Cevap php

Ben arama sorguları için seo yapmaya çalışıyorum. Ben böyle bir formu var:

 <form action="index.php?<?=$_GET['search-input01']?>'" method="get">
   <p class="nom t-center">
     <label for="search-input01">All:</label>
     <input type="text" size="75" name="q" id="search-input01" />
     <input type="image" src="design/search-button.gif" class="search-submit" />
   </p>
 </form>

u adres çubuğuna /index.php?q=SEARCHTERMHERE&x=0&y=0 arama yaptığınızda. Ben yapmak istiyorum bu: /search-SEARCHTERMHERE

nasıl?

2 Cevap

Böyle bir şey deneyin:

if (isset($_GET['q'])) {
    header('Location: http://example.com/search-'.rawurlencode($_GET['q']));
    exit;
}

Bu sorgu /index.php?q=SEARCHTERMHERE&x=0&y=0 /search-SEARCHTERMHERE için gibi bir q argüman içeren URL olan bir isteği yönlendirir.


Edit Ayrıca sadece mod_rewrite ile bu deneyebilirsiniz:

RewriteCond %{THE_REQUEST} ^GET\ /index\.php\?
RewriteCond %{QUERY_STRING} ^(([^&]*&+)*)q=([^&]*)&*(.*)
RewriteRule ^index\.php$ /search-%3?%1%4 [L,R]

RewriteRule ^search-(.+) index.php?q=$1 [L,QSA]

İlk kural dışarıdan isteğini yönlendirmek için ve ikinci iç yeniden yazma içindir.

. Eğer Gumbo önerilen şeyin tersini yapmak istiyorsanız, yani sizin htaccess dosyasında böyle bir şey girin, /search-SEARCHTERM /index.php?q=SEARCHTERM&x=0&y=0 yönlendirmek:

RewriteEngine On
RewriteRule ^search-([-_A-Za-z0-9]+)$ /index.php?q=$1&x=0&y=0 [L]