Nasıl Apache veya PHP kullanarak REQUEST_URI değiştirmek?

1 Cevap php

Ben bazı URL yeniden yazma büyü ile bazı yardım istiyorum. Ben sorun Request_URI değişkeni değiştirerek yaşıyorum.

İki sitelerinde http://host.com/alpha ve http://host.com/beta arasında geçiş yapmak istiyorum. Her ikisi de aynı php komut dosyası tarafından işlenir. Bu script http://host.com/index.php.

Index.php GET değişkeni SITE görüntülemek için hangi site bunu söylemek için verilecek bekliyor. Ayrıca görüntülemek için hangi içerik belirlemek için REQUEST_URI kullanır. Bu iş için amacıyla, alpha ya da beta, orijinal isteğinden kaldırılması gerekir. Ben şaşırıp yerdir.

Yani REQUEST_URI / alpha / içerik / dosya başlar ve / içerik / dosya haline gelmesi gerekmektedir.

. Htaccess bu kullanarak mod_rewrite denedim:

RewriteCond %{REQUEST_URI} /(alpha|beta)(.*)   
RewriteRule .* index.php?site=%1  

index.php:

<?php
echo "Site: " . $_GET['site'] . "<br/>";
echo "Request_URI: " . $_SERVER['REQUEST_URI'] . "<br/>";
//get_html($_SERVER['REQUEST_URI']);
?>

Ben Apache SetEnvIf ve Alias ​​ile daha iyi şans umuyorum.

Bunun nasıl herhangi bir fikir büyük mutluluk duyacağız. Teşekkürler.

1 Cevap

Yönetmek oldukça kolaydır:

RewriteRule ^(alpha|beta)/?(.*) /$2?site=$1 [R,L]

Bu geçici (HTTP durum kodu 302) herhangi bir URL'ler başında "alfa" veya "beta" olmadan "alfa" ya da bir kaynağa "beta" ile başlayan, ancak sorgu değişkeni "sitesine ilişkili bir sorgu dizesi olarak eklenmiş olan yönlendirme olacak ".

Örnek:

// Will be redirected to http://host.com/shoes/nike/order.php?site=alpha
GET http://host.com/alpha/shoes/nike/order.php

EDIT This won't account for query strings provided by the original GET call. If you need those the following would do:

RewriteRule ^(alpha|beta)/?(.*) /$2?site=$1 [QSA,R,L]
RewriteRule .* index.php [NC,L]

Şerefe!