1

ローカルのクエリ文字列mysite.com/?local=1は 1 ~ 600 です。

各ローカルには都市名があります。表示されるようにURLを書き換えるにはどうすればよいですかmysite.com/cityname/。if (local ==1){cityname = boston;} のようにそれぞれのシナリオを書いてもかまいません。

私が求めていることは可能ですか?mysite.com/?local=1だから私はそれを取り、に変えたいと思いmysite.com/boston/ます。

4

2 に答える 2

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>

基本的に、このコンボが行うことは、変数'local'を持つGET文字列が渡された場合、都市IDを名前に変換してリダイレクトを実行することです。その後、クエリ文字列を取得して、それを使って好きなことをします

于 2012-09-18T19:05:14.463 に答える
0

ブラウザで実際に URL を変更したい場合は、書き換えではなくリダイレ​​クトが必要です。この場合、番号から名前を検索して、header("Location...");必要に応じて使用できます。

于 2012-09-18T18:50:32.510 に答える