используя mod_rewrite с $ _GET - PullRequest
       12

используя mod_rewrite с $ _GET

1 голос
/ 10 января 2010

Я пытаюсь сделать SEO для поисковых запросов. у меня есть такая форма:

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

когда вы делаете поиск /index.php?q=SEARCHTERMHERE&x=0&y=0 в адресной строке. Я хочу сделать это: /search-SEARCHTERMHERE

как это сделать?

Ответы [ 2 ]

3 голосов
/ 10 января 2010

Попробуйте что-то вроде этого:

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

Это перенаправит запрос, URL-запрос которого содержит аргумент q, как в /index.php?q=SEARCHTERMHERE&x=0&y=0 на /search-SEARCHTERMHERE.


Редактировать Вы также можете попробовать это только с mod_rewrite:

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]

Первое правило - перенаправлять запрос извне, а второе - для внутреннего перезаписи.

2 голосов
/ 10 января 2010

Если вы хотите сделать что-то противоположное тому, что предложил Gumbo, то есть перенаправить с /search-SEARCHTERM на /index.php?q=SEARCHTERM&x=0&y=0, введите что-то подобное в свой файл .htaccess:

RewriteEngine On
RewriteRule ^search-([-_A-Za-z0-9]+)$ /index.php?q=$1&x=0&y=0 [L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...