在我的网站上输入搜索以获取mysite.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
。
答案 0 :(得分: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部分的数组。
另外,您应该尝试sanitize the input以确保安全。
答案 1 :(得分: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网址,例如,使用apache服务
http://mysite.com/video.php?search=A&type=B
..幕后的
http://mysite.com/A/B
请求..
答案 2 :(得分:0)
你可以使用apache Mod Rewrite,虽然对于刚刚学习它的人来说可能会令人沮丧。或者,您可以将您的站点移动到像drupal,wordpress或joomla这样的cms,并让它自动为您创建别名。