在PHP中,如何在域之后获取任何字符串作为php变量?例如:me.com/FOO,mem.com/VAR3

时间:2010-05-27 15:58:21

标签: php redirect

所以我的index.php可以是这样的:

<?php
      $restOfURL = ''; //idk how to get this
      print $restOfURL; //this should print 'FOO', 'VAR3', or any string after the domain.
 ?>

6 个答案:

答案 0 :(得分:4)

你想用,

<?php
    $restOfURL = $_SERVER['REQUEST_URI'];

    // If you want to remove the slash at the beginning you can use ltrim()
    $restOfURL = ltrim($restOfURL, "/");
?>

您可以在PHP documentation中找到更多预定义的服务器变量。

<强>更新
根据您对该问题的评论,我猜您正在使用类似mod_rewrite的内容来重写FOO等,并将所有内容路由到一个文件(index.php)。在这种情况下,我希望URL的其余部分已经传递给index.php文件。但是,如果没有,您可以使用mod_rewrite将其余的URL作为GET变量传递,然后在index.php文件中使用该GET变量。

因此,如果您启用mod_rewrite,然后将此类内容添加到.htaccess文件中,

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?url=$1 [L,QSA]

然后,您可以在$_GET['url']变量的index.php文件中使用其余的URL。

答案 1 :(得分:1)

$var = ltrim( $_SERVER['REQUEST_URI'], '/' )

http://www.php.net/manual/en/reserved.variables.server.php

答案 2 :(得分:1)

正如大家所指出的那样,阅读$_SERVER['REQUEST_URI']可以告诉你URL的样子,但除非你有办法指出{{1}的请求,否则它不会按你想要的方式工作。 }和me.com/VALUE1到将进行处理的脚本。 (否则您的服务器将返回404错误,除非您有所需的每个值的脚本,在这种情况下脚本已经知道值...)

假设您使用的是apache,则需要使用mod_rewrite。您必须安装并启用该模块,然后将一些directives添加到.htaccess,httpd.conf或虚拟主机配置中。这样,您就可以在me.com/VALUE2内部请求me.com/XXX地图,这样您就可以从me.com/index.php?var=XXX中读取值。

答案 3 :(得分:1)

通过查看示例,我认为您正在寻找apache mod_rewrite。 您可以通过htaccess文件应用RewriteRule,例如:

Options +FollowSymlinks
RewriteEngine on

RewriteRule ^([\w]+)$ /checkin.php?string=$1 [L]

例如,此url http://foo.com/aka2将由checkin.php脚本处理,并将“aka2”作为$ _GET ['string']传递。

毫无疑问,该网址仍会在浏览器中显示为http://foo.com/aka2,但服务器实际上会处理http://foo.com/checkin.php?string=aka

mod_rewrite documentation

答案 4 :(得分:0)

$_SERVER['REQUEST_URI']

答案 5 :(得分:0)

为什么要烦扰所有花哨的mod_rewrite / query_string业务?已有$_SERVER['PATH_INFO']可用于此类数据。