Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 生成静态页面-理解URL请求_Php_Mysql - Fatal编程技术网

Php 生成静态页面-理解URL请求

Php 生成静态页面-理解URL请求,php,mysql,Php,Mysql,我有大量的内容存储在MySQL数据库中,这为我的应用程序提供了动力。我想在网上提供这些信息,为非应用程序用户提供内容,并提高我的网站排名 应用程序的后端在PHP/MySQL上运行。因此,我想使用PHP生成这些页面(这是正确的方法吗?)。我猜PHP会采用url的结构,例如,****中的部分是可变的。如何让PHP基于这些路由请求?最好、最有效的方法可能是在Apache中使用URL重写。将以下代码添加到根文件夹中的.htaccess文件(如果不存在,则创建一个): RewriteEngine On R

我有大量的内容存储在MySQL数据库中,这为我的应用程序提供了动力。我想在网上提供这些信息,为非应用程序用户提供内容,并提高我的网站排名


应用程序的后端在PHP/MySQL上运行。因此,我想使用PHP生成这些页面(这是正确的方法吗?)。我猜PHP会采用url的结构,例如,****中的部分是可变的。如何让PHP基于这些路由请求?

最好、最有效的方法可能是在Apache中使用URL重写。将以下代码添加到根文件夹中的
.htaccess
文件(如果不存在,则创建一个):

RewriteEngine On
RewriteRule ^/viewer/([^/]+)/([^/]+)/?$ viewer.php?venue=$1&id=$2 [L]
现在,在根目录中创建一个
viewer.php
文件。然后,您可以访问变量作为
$\u GET
超全局的一部分,如下所示:

$venue = $_GET['venue'];
$id = $_GET['id'];

请注意,您应该在代码中使用SQL注入,并相应地清理这些输入。

取决于您的web服务器

如果您将PHP5-FPM与Nginx一起使用:

location /viewer {
  fastcgi_pass unix:/var/run/php5-fpm.sock;
  fastcgi_param SCRIPT_FILENAME /path/to/viewer.php;
  include fastcgi_params;
}
我可能会这么做。然后在PHP中,您需要在/viewer之后分解$\u服务器['REQUEST\u URI']路径,并在此基础上运行逻辑

例如:

<?
$parts = explode("/", $_SERVER['REQUEST_URI']);
$i=0;
while($parts[$i] != 'viewer'){
  unset($parts[$i]);
  $i++;
}
if($parts[$i] == 'viewer') unset($parts[$i]);
$parts = array_values($parts);
var_dump($parts);
?>


您应该在/viewer/(地点和ID)之后看到一个包含所有值的数组。

URL重写;伟大的如果我将Apache mod应用于当前服务器,它是否仍然正确地服务于旧页面(如我的旧index.php等),或者所有请求现在都通过viewer.php?否,重写规则只针对与您的模式匹配的任何URL(即
/viewer/()/()
)。最后一个问题,这是否使搜索引擎可以对页面进行爬网?是的,但是你应该使用规范的URL标记来确保Google选择正确的版本。为了将来添加到这个,我必须在viewer.php之前添加一个斜杠,以便在EC2/EB上使用