如何使用Apache或PHP修改Request_URI?

时间:2010-02-05 21:44:58

标签: php apache mod-rewrite url-rewriting

我想要一些URL重写魔法的帮助。我无法修改Request_URI变量。

我想在两个网站http://host.com/alphahttp://host.com/beta之间切换。它们都由相同的PHP脚本处理。此脚本为http://host.com/index.php

index.php期望获得一个GET变量SITE来告诉它要显示哪个站点。它还使用REQUEST_URI来确定要显示的内容。为了使其正常工作,需要从原始请求中删除 alpha beta 。这就是我被困住的地方。

所以REQUEST_URI从/ alpha / content / file开始,需要成为/ content / file。

我在.htaccess中尝试使用mod_rewrite:

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']);
?>

我希望Apache的SetEnvIf和Alias能有更好的运气。

任何关于如何做到这一点的想法将不胜感激。感谢。

1 个答案:

答案 0 :(得分:2)

非常容易管理:

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

这将暂时将(“HTTP”状态代码302)以“alpha”或“beta”开头的任何网址重定向到开头没有“alpha”或“beta”的资源,但作为查询字符串附加到查询中变量“site”。

示例:

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

修改 这不会考虑原始GET调用提供的查询字符串。如果您需要以下内容:

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

干杯!