我有一个查询字符串mysite.com/?local=1
地方从1变化 - 600PHP的mod_rewrite查询字符串转化为现实的话
对于每一个地方是一个城市的名字。我如何重写网址,使其显示为mysite.com/cityname/
。我不介意为每个例如if(local == 1){cityname = boston;}写一个场景。
我甚至要求甚至可能吗?所以我想采取mysite.com/?local=1
并把它变成mysite.com/boston/
。
我有一个查询字符串mysite.com/?local=1
地方从1变化 - 600PHP的mod_rewrite查询字符串转化为现实的话
对于每一个地方是一个城市的名字。我如何重写网址,使其显示为mysite.com/cityname/
。我不介意为每个例如if(local == 1){cityname = boston;}写一个场景。
我甚至要求甚至可能吗?所以我想采取mysite.com/?local=1
并把它变成mysite.com/boston/
。
的index.php:
<?php
$map = array(
1 => 'city',
2 => 'Portland',
3 => 'Kaunas',
4 => 'Hokaido',
.....
);
if (isset($_GET['local']) && intval($_GET['local']) < 600 && intval($_GET['local']) > 0) {
header('Location: mysite.com/' . $map[intval($_GET['local'])]);
die(); // Redirect to use the pretty url
}
$path = explode('/', explode('?', $_SERVER['REQUEST_URI'])[0]); // might need to expand if php version < 5.4
$city = $path[1];
的.htaccess:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [PT,L]
</IfModule>
基本上,这个组合确实是,如果一个GET字符串变量与 '本地' 获得通过,会做一个重定向与城市id转换为名称。之后,你只需要查询字符串,做任何你想要的东西
如果您希望URL在浏览器中实际更改,则需要重定向而不是重写。在这种情况下,您可以从数字中查找名称,并根据需要使用header("Location...");
。
我的脚本关闭帖子,我只是想用真实的城市名称来掩盖它,比如从数据库中取出productID并插入产品名称。编号甚至解决mysite.com/local/1/boston.html或任何类型的 – user1681198
你想让用户在他们的地址栏中输入/看到哪个URL? –