使用带有$ _GET的mod_rewrite

时间:2010-01-10 12:40:30

标签: php .htaccess forms get

我正在尝试搜索查询。我有一个这样的表格:

 <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 个答案:

答案 0 :(得分:3)

尝试这样的事情:

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

这将重定向一个请求,该请求的网址查询包含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]

第一条规则是在外部重定向请求,第二条规则是内部重写。

答案 1 :(得分:2)

如果您想要与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]