【发布时间】:2014-07-16 13:15:25
【问题描述】:
我已经尝试解决此问题 2 天了,但无济于事。
基本上,我正在根据从上一页传递的 URL 中的任何内容尝试来自 mysql 的 $_GET 结果。
网址是这样的:http://mydomain.com/manufacturer/abc
为了实现这个 URL,我使用 .htaccess 工作正常。
但如果 url 有 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 各种可能的方法,但似乎没有任何效果。
有人可以就这个问题提出建议吗?
提前致谢
【问题讨论】:
-
您的 RewriteRule 禁止除字母和数字之外的任何内容。
-
$_GET['man']但在您的 .htaccess 中有?manu=$1