我的网站上有一个搜索表单。提交表单时,它由我的index.php处理,因此URL就像index.php?s = some。现在我在htaccess中添加了一些重写规则:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)/$ index.php?s=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)/([^/]*)/?$ index.php?s=$2&f=$1 [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]*)/([^/]*)/([^/]*)?$ index.php?s=$2&f=$1&t=$3 [QSA,L]
我的表单有“搜索”操作,它看起来像这样:
<form id="searchform" method="get" action="search">
现在提交时会发生的情况是您被重定向到example.com/search/?s=some 但我想要的是重定向到example.com/search/some 为实现这一目标,我可以添加哪些重写规则?
答案 0 :(得分:0)
当我为我的项目寻找解决方案时,我遇到了http://matthewjamestaylor.com/blog/how-to-post-forms-to-clean-rewritten-urls。涉及的PHP可能有点矫枉过正,但确实有很多实用性。
<强>的.htaccess 强>
# Clean up search URL
RewriteRule ^search/([^/\.]+)$ search.php?q=$1
<强> PHP 强>
<?
// Collect the search phrase from the URL
$qs = mysql_real_escape_string($_GET['q']);
// Clean up by removing unwanted characters
$qsclean = ereg_replace("[^ 0-9a-zA-Z]", " ", $qs);
// Remove multiple adjacent spaces
while (strstr($qsclean, " ")) {
$qsclean = str_replace(" ", " ", $qsclean);
}
// Prefix each keyword with a + (for the SQL statement)
$qsql = "+".str_replace(" ", " +", $qsclean);
?>
答案 1 :(得分:-1)
为什么不使用post方法? 我认为这种方法会使编程变得更加复杂 请使用post方法。它更安全。