以下是包含选项值的选择标记的html表单:
<select class="form-control" id="basic" name="location" required>
<?php
$get_location = mysqli_query($conn, "SELECT * FROM product_sub_area");
if(mysqli_num_rows($get_location) == 0 ) {
$choose = 'No City found';
} else {
$choose = 'Choose City';
}
?>
<option value=""><?php echo $choose; ?></option>
<?php
while($get_location_result = mysqli_fetch_array($get_location) ) {
$location_id = (int) $get_location_result['psub_area_id'];
$location_name = htmlspecialchars($get_location_result['psub_name']);
echo "<option value='$location_name'>$location_name</option>";
}
?>
</select>
提交此表单后,页面网址显示如下:
http://localhost/freelancer/sitename/location?location=California
我希望网址对于每种相同类型的网址请求都应该是这样的。它可以是多个查询字符串:
我正在使用以下.httaccess规则:
ErrorDocument 404 /not-found.php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
RewriteRule ^([^/\.]+)/([^/\.]+)$ location.php?location=$1 [NC,L]
答案 0 :(得分:1)
在sitename文件夹中尝试这个,我从你的要求中观察到你正在删除php扩展并重写请求到location参数。
ErrorDocument 404 not-found.php
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^location/([\w-]+)$ location.php?location=$1 [QSA,NC,L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
答案 1 :(得分:0)
在这种情况下,您必须使用JavaScript来触发提交,然后改变提交的URL以仅包含州名称。您可以为此use jQuery或标准JS。这两个解决方案非常相似,所以你可以很容易地将jQuery重新编写为vanilla。
您必须使用JS的原因是因为这一切都发生在您将请求发送到服务器之前,而这正是您要更改的请求。
PS:请记住为非JS启用的浏览器添加回退(是的,它们确实存在)和网络爬虫。