2012-09-18 57 views
1

我有一个查询字符串mysite.com/?local=1地方从1变化 - 600PHP的mod_rewrite查询字符串转化为现实的话

对于每一个地方是一个城市的名字。我如何重写网址,使其显示为mysite.com/cityname/。我不介意为每个例如if(local == 1){cityname = boston;}写一个场景。

我甚至要求甚至可能吗?所以我想采取mysite.com/?local=1并把它变成mysite.com/boston/

+0

你想让用户在他们的地址栏中输入/看到哪个URL? –

回答

0

的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转换为名称。之后,你只需要查询字符串,做任何你想要的东西

0

如果您希望URL在浏览器中实际更改,则需要重定向而不是重写。在这种情况下,您可以从数字中查找名称,并根据需要使用header("Location...");

+0

我的脚本关闭帖子,我只是想用真实的城市名称来掩盖它,比如从数据库中取出productID并插入产品名称。编号甚至解决mysite.com/local/1/boston.html或任何类型的 – user1681198