你好,善良的人们。。现在我知道这个关于clean url的问题已经被问了大概十几次了,但似乎没有一个是我遇到的问题。我使用while循环为我的表单生成不同的产品id,表单是使用get方法提交的。然而,我已经能够在htaccess文件中用字符串重写我的url
localhost/source/p/variable1-variable2-variable3.html
我还使用javascript来阻止默认提交,以获得所需的url格式。
现在我的问题是。。如果没有url重定向,它会给我不同的ID,但格式不干净:
localhost/source/p? agent_id=variable1&product_title=variable2&product_id=variable3
在我的while循环中有不同的变量。。
但是通过javascript重定向,它只给我第一个id,并且在20多个不同的情况下一直显示具有该id的内容。所以我需要帮助如何提供不同的身份证,我通常应该得到。这是我的档案:
我的htaccess文件
Options +FollowSymlinks -MultiViews
RewriteEngine on
RewriteRule ^p/([0-9]+)-([0-9a-zA-Z_-]+)-([0-9]+)\.html$ product.php?agent_id=$1&product_title=$2&product_id=$3 [QSA, NC, L]
php操作文件
<?php
$SQL = Select * from product where..
$query = mysqli_query($con, $sql);
While ($row = mysqli_fetch_assoc($query)) {
$product_id = $row ['product_id'];
$agent_id = $row ['agent_id'];
$product_title = $row ['product_title'];
?>
<form id="myform" method='get' action='p/'>
<input type="hidden" name="agent_id" value="<?php echo $agent_id; ?>" />
<input type="hidden" name="product_title" value="<?php echo $product_title; ?>" />
<input type ="hidden" name="product_id" value="<?php echo $product_id; ?>" />
<button type="submit">View product</button>
</form>
<?php } ?>
我的javascript
$(function(){
$("#myform").submit(function(e){
e.preventDefault();
var action = $(this).attr("action");
var agent_id = $(":input[name='agent_id']").val();
var product_title = $(":input[name='product_title']").val();
var product_id = $(":input[name='product_id']").val();
action = action + agent_id + "-" + product_title + "-" + product_id + ".html";
location.href = action;
});
});
所以我不知道我做错了什么。。我不知道如何通过循环来给出各种ID,因为我认为while循环会改变这一点。。但事实并非如此。
抱歉,如果我的手机有点乱的话。
1条答案
按热度按时间z4iuyo4d1#
首先,当您不确定.htaccess在mod\u rewrite方面做了什么时,您应该首先打开mod\u rewrite的日志记录级别,因为这通常会为您指明正确的方向:http://httpd.apache.org/docs/current/mod/mod_rewrite.html
接下来,我建议您提供一个正在匹配的url的有效示例,然后使用regex coach之类的工具来检查您的模式是否真正正确地匹配了数据。
我对这里实际问题的猜测是,产品标题没有得到预期的匹配(可能是意外的编码字符或其他东西),但是mod\u rewrite的日志将告诉您regex是否成功。
最后,我不知道为什么你要使用一个表单标签,如果你实际上不打算提交表单。。。
为什么不直接使用php来构建一个重定向到那个位置的按钮呢?
这比试图阻止表单提交和使用javascript动态构建表单更干净。。。