我想要一些URL重写魔法的帮助。我无法修改Request_URI变量。
我想在两个网站http://host.com/alpha和http://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能有更好的运气。
任何关于如何做到这一点的想法将不胜感激。感谢。
答案 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]
干杯!