Non mi sono strettamente attenuto a quello che è il tuo codice proposto.
Nei commenti trovi anche un suggerimento di una delle possibili cause del reindirizzamento errato.
<?php
/**
* La ragione per cui non vieni reindirizzato correttamente potrebbè essere
* legata al server web che utilizzi per servire la tua applicazione.
*
* Nel caso di Apache posiziona un file .htaccess nella
* web root dell'applicazione, di seguito un esempio del contenuto:
*
* file ".htaccess":
* --------------------------------------------
*
* RewriteEngine On
*
* RewriteCond %{REQUEST_FILENAME} !-d
* RewriteCond %{REQUEST_FILENAME} !-f
* RewriteRule ^ index.php [L]
*
* ---------------------------------------------
*
*
*
* Se invece utilizzi Nginx nel file di configurazione del sito:
*
* /etc/nginx/site-aviable/mySiteConfigFIle.something:
* ----------------------------------------------
*
* location / {
* try_files $uri $uri/ /index.php?$query_string;
* }
*
* ----------------------------------------------
*
*/
/**
* Inizializzo le variabili dell'applicazione
*
*/
// istruzioni legate al fatto che sto lavorando in locale sulla posta 8000
// per cui ho bisogno di specificare anche la porta su cui il sito è
// raggiungibile
$site_url = "http://" . $_SERVER['SERVER_NAME'];
$server_port = $_SERVER['SERVER_PORT'];
$site_url .= ":" . $server_port;
// url del form da cui è partita la richiesta/submit, partendo dal presuppposto
// che il form sia nell'index dell'applicazione, questo perché non avendo
// ide dell'applicazione ho riprodotto il problema in un file index.php
$form_url = $site_url;
// messaggi da mostrare all'utente
$msgs_to_user = array();
/**
* Dopo aver recuperato le varibili d'ambiente iniziamo ad elaborare la
* richiesta dell'utente e comporre la risposta
*
*/
// bisognerebbè gestire la logica che chiama lo script coun un router o
// con un pattern intelligente, ma per semplicità metteremo tutto insieme
// se il parametro 'cercacit' è impostato e valorizzato allora il tuo script
// verrà chiamato in causa ed eseguito
$delta = 'cercacit';
$expected_solutions = array( 'italia', 'spagna', 'altro' );
if( array_key_exists( $delta, $_GET ) && $_GET[ $delta ] != null )
{
// per semplificare il lavoro recupero il parametro a cui sono interessato
// anche se bisognerebbe validare l'input dell'utente
$city_name = preg_replace( '/[^-a-zA-Z0-9_]/', '', $_GET[ $delta ] );
$city_name = strtolower( $city_name ) ;
// controllo che il parametro idenitficato sia presente tra quelli previsti
// altrimenti gestisco la UX notificando all'utente che la sua scelta non
// è prevista e gli fornisco informazioni sulle possibilità che ha
$match_result = in_array( $city_name, $expected_solutions );
if( $match_result )
{
// considerando che l'informazione richiesta è presente tra quelle previste
// redirigo l'utente
$msgs_to_user[] = "Città: $city_name";
header( "Location: " . $site_url . "/" . $city_name );
}
else
{
// nel caso in cui la scelta dell'utente non sia prevista ricarico la pagina
// con il form ed informo l'utente delle possibilità utili per continuare
// la navigazione
$msgs_to_user[] = "Caro utente la città da te selezionata ($city_name) ...";
header( "Location: " . $form_url );
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Page Title</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<!--
<link rel="stylesheet" type="text/css" media="screen" href="main.css" />
<script src="main.js"></script>
-->
</head>
<body>
<?php if( $msgs_to_user ) : ?>
<div id="msgs">
<ul>
<?php foreach( $msgs_to_user as $msg ) echo "<li>$msg</li>"; ?>
</ul>
</div>
<?php endif; ?>
<form action="/" method="get">
<input name="cercacit" type="text" placeholder="Quale città vuoi visitare?" require/>
<input name="op" type="submit" value="search" />
</form>
</body>
</html>