0

当我在我的网站上键入搜索以获取类似的 urlmysite.com/searach/blabla/video而不是mysite.com/?search=blabla&type=video. 请不要告诉我必须使用 CodeIgniter,因为它没有帮助。我确信我需要的只是 PHP 中的一个小函数。

这是我的search.php

<form id="searchwrapper" name="searchform">
<input type="text" class="searchbox" id="txtSearch" name="search" alt="Search Criteria" />
<input type="submit" src="../images/empty.png" class="searchbox_submit"/>

<p id="circ">
<input  type="radio" id="mp3" name="type" checked value="mp3"/>
<label class="circ-btn normal" for="mp3">mp3</label>
                        </p>
<p id="circ">
<input type="radio" id="album" name="type" <?php echo $radio2;?> value="album"/>
<label class="circ-btn normal" for="album">Album</label></p>                
</form>

我的.htacces规则设置正确;当我使用 直接访问我的网站时mysite.com/searach/blabla/video,它工作正常,但这不是问题。当我在我的网站上键入搜索时,我需要有这样的链接。相反,我得到了这个链接,这是不对的mysite.com/?search=blabla&type=video

4

3 回答 3

2

您可以使用mod_rewrite,并将其放入您的.htaccess文件中

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^search/([^/\.]+)/([^/\.]+)/?$ index.php?search=$1&type=$2 [L]

然后在你的 php 中使用它

$URI = substr($_SERVER['REQUEST_URI'], 1);
$URIparts = explode("/", $URI);

这为您提供了一个包含 url 部分的数组。

此外,您应该尝试清理输入以确保安全。

于 2012-10-07T02:36:49.973 回答
1

正如其他人评论的那样,如果您使用的是 apache,则需要 mod_rewrite。

如果您真的想输入搜索并最终以 SEF URL 结尾,如您所描述的,您需要类似以下内容:

RewriteCond %{QUERY_STRING} ^search=(\w+)&type=(\w+)$
RewriteRule ^ http://mysite.com\/%1\/%2? [R,L]

..这将重定向请求,例如

http://mysite.com/index.php?search=A&type=B

.. 至

http://mysite.com/A/B

.. 和 JKirchartz 提供了使用 php 脚本作为 SEF url 的示例,例如,让 apache 服务

http://mysite.com/video.php?search=A&type=B

..幕后当

http://mysite.com/A/B

.. 被请求

于 2012-10-07T03:01:47.163 回答
0

您可以使用 apache Mod Rewrite,尽管对于刚学习它的人来说可能会令人沮丧。或者,您可以将您的网站移动到诸如 drupal、wordpress 或 joomla 之类的 cms 上,并让它自动为您创建一个别名。

于 2012-10-07T02:32:34.230 回答