0

我注意到许多网站使用以

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

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

website.com/value/value2

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

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

4

4 回答 4

1

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

于 2012-08-31T05:53:32.380 回答
1

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

检查这个。

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

这包括三个部分:

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

请参阅初学者指南 mod_rewrite。同样的教程

于 2012-08-31T05:54:11.533 回答
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。

于 2012-08-31T05:55:34.323 回答
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 变量的格式化 url:http ://www.example.com/username/password

于 2012-08-31T06:17:39.160 回答