PHP获取URL作为变量

时间:2012-08-31 05:49:27

标签: php html css .htaccess mod-rewrite

我注意到许多网站都使用以

结尾的网址
website.com/index.php?var="value"&var2="value2"

我想知道如何才能做到这一点,而不是让URL的结尾而不是:

website.com/value/value2

和然后有它,以便代替的搜索“/值/ VALUE2”内部的服务器根文件夹的它会代替刚刚打开的的index.php ,然后将 PHP <内部/ em>编码有一个能够获得 URL 的功能。无论是作为字符串“/ value / value2”还是数组“value”“value2”,它都无关紧要,只是获取这些变量的一些方法。这样就可以清理 URL 并轻松告诉您在网站中的位置。

此外,如果有这样做有可能对 style.php 即在同一文件夹中的的index.php (但是具有 PHP标头将其设置为输出 CSS ),将使用<link rel="stylesheet" type="text/css" url="style.php" />或其任何语法在 index.php 的头部调用是,能够获得相同的变量,以便可以根据 URL 更改 css 样式。

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您可以在.htaccess文件中重写网址

检查一下。

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

这有三个部分:

  1. RewriteRule指定这是重写规则(与条件或其他指令相对)。该命令是将第2部分重写为第3部分。
  2. 此部分是正则表达式,仅当URL与此正则表达式匹配时才会运行规则。在这种情况下,它说 - 查找字符串的开头,然后是一堆非斜杠字符,然后是斜杠,然后是另一堆非斜杠字符。然后再一堆非斜线字符,然后斜线,然后是另一堆非斜线字符。括号表示括号内的部分将被存储以供将来参考。
  3. 最后,这部分说要以这种格式重写给定的URL。 $ 1和$ 2指的是捕获和存储的部分。
  4. 参考Beginner's Guide to mod_rewrite。 同样tutorial

答案 2 :(得分:0)

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

RewriteEngine on

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

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

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

答案 3 :(得分:0)

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

例如。我有网址:http://www.example.com?username=username&password=password

现在我可以使用该网址并将其设为:

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

这会产生基于$ _GET变量的格式化网址:http://www.example.com/username/password