PHP获取URL作为变量


PHP Obtain the URL as a variable

我注意到许多网站使用以结尾的URL

website.com/index.php?var="value"&var2="value2"

我想知道我如何才能做到这一点,而不是把它作为URL的结尾,而是这样:

website.com/value/value2

然后拥有它,这样它就不会在服务器根文件夹中搜索"/value/value2",而是只打开index.php,然后在php编码中有一个函数,可以得到URL是什么。无论是字符串"/value/value2"还是数组"value"value2",这都无关紧要,只是获取这些变量的某种方式。这样就可以清理URL,并很容易地说出你在网站上的位置。

此外,如果有一种方法可以做到这一点,那么与index.php在同一文件夹中的style.php(但有一个php头将其设置为输出CSS)也可以使用<link rel="stylesheet" type="text/css" url="style.php" />或任何语法在index.php的头中调用,以便能够获得相同的变量,从而可以根据URL更改css样式。

您可以在.htaccess文件中使用URL重写

检查一下。

RewriteEngine on
RewriteRule ^([^/]+)/([^/]+)/([^/]+) /?var=$1&var2=$2 [L]

这有三个部分:

  1. RewriteRule指定这是一条重写规则(与条件或其他指令相反)。命令是将第2部分重写为第3部分
  2. 这部分是一个正则表达式,只有当URL与此正则表达式匹配时,才会运行该规则。在这种情况下,它说-寻找字符串的开头,然后是一堆非斜杠字符,然后是斜杠,然后是另一堆非斜线字符。然后是一堆非斜杠字符,然后是一个斜杠,然后是另一堆非斜线字符。括号表示括号内的部分将被存储以供将来参考
  3. 最后,这一部分说以这种格式重写给定的URL$1美元和2美元是指被捕获和储存的零件

请参阅mod_rewrite入门指南。同样的教程。

您需要重新编写URL。。如果您使用的是apache,则必须在.htaccess文件中添加更改。检查本手册和本手册。

如果使用apache,请启用mod_rewrite并使用.htaccess

RewriteEngine on
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ /index.php [L]

如果使用nginx,请使用nginx_rewrite_modulehttp://nginx.org/ru/docs/http/ngx_http_rewrite_module.html

在index.php解析$_SERVER['REQUEST_URI']变量中,它将包含请求的url。

这可以很容易地实现。问号之后的所有内容都称为$_GET变量。因此,您可以调用$_GET['var']或$_GET['var2']来获取它们的值。

例如。我有URL:http://www.example.com?username=username&password=密码

现在我可以把这个网址做成:

<?php
$user = $_GET['username'];
$pass = $_GET['password'];
$newUrl = 'http://www.example.com/' . $user . '/' . $pass;
echo '<a href="' . $newUrl . '">Link text here</a>';
?>

这将产生一个基于$_GET变量的格式化url:http://www.example.com/username/password