我一直试图解决这个问题2天,但没有用。
基本上,我正在根据上一页传递的URL中的内容尝试$_GET
来自mysql的结果。
网址如下:http://mydomain.com/manufacturer/abc
要实现此网址,我使用的.htaccess
工作正常。
但是如果网址有empty space
或-
或任何其他特殊字符,我的php文件就不会从mysql数据库中获取结果。
所以这不会起作用:
http://mydomain.com/manufacturer/a-b-c
或者这不会起作用:
http://mydomain.com/manufacturer/a b c
也不是这样:
http://mydomain.com/manufacturer/a+bc
等等......
我使用的是smarty,到目前为止,这是一个非常直接的过程,但现在它已经证实有点困难。
我的php文件如下所示:
if (isset($_GET['man'])) {
$man = $_GET['man'];
if( ! $stmt = $db_conx->prepare("SELECT id, man, product_name FROM `$TabelName` WHERE `man` = ?") ) {
die( $db_conx->error );
}
$stmt->bind_param('s', $man);
if ( ! $stmt->execute() ) {
die( $stmt->error );
}
$stmt->bind_result($id, $man, $product_name);
$stmt->store_result();
while($stmt->fetch()) {
$value[] = array('id'=>$id, 'man'=>$man, 'product_name'=>$product_name);
}
}
// Assign this array to smarty...
$smarty->assign('man', $value);
// Assign this array to smarty...
$smarty->assign('$man', $value);
}
这是我的htaccess文件:
RewriteCond %(REQUEST_FILENAME) !-f
RewriteCond %(REQUEST_FILENAME) !-d
RewriteRule ^manufacturer/([a-zA-Z0-9]+)$ manufacturers.php?manu=$1
RewriteRule ^manufacturer/([a-zA-Z0-9]+)/$ manufacturers.php?manu=$1
我尽可能地尝试了urlencode
和urldecode
,但似乎没有任何效果。
有人可以就此问题提出建议吗?
提前致谢
答案 0 :(得分:1)
试试这个:
RewriteRule ^manufacturer/(.*)/?$ manufacturers.php?manu=$1
注意/?
,你不需要第二条规则,这件事适合你。
答案 1 :(得分:1)
DO
RewriteRule ^manufacturer/(.+)/?$ manufacturers.php?manu=$1
在制造商/匹配后,这意味着任何一次或多次。