基于url构建PHP页面

基于url构建PHP页面,php,html,url,dynamic,Php,Html,Url,Dynamic,如果您有如下url: http://www.example.com/400x200 当用户使用php访问该url时,是否可以创建一个响应400x200的页面 我知道如何回显路径-这很简单(ltrim($\u SERVER['path\u INFO'],'/')),但不知道如何动态创建页面 任何帮助都将不胜感激,请提前感谢您可能需要查看Apache Rewrites以重写您的URL: 您可能需要查看Apache重写来重写您的URL: 将其设置为GET变量,如 http://www.example

如果您有如下url:

http://www.example.com/400x200
当用户使用php访问该url时,是否可以创建一个响应400x200的页面

我知道如何回显路径-这很简单(
ltrim($\u SERVER['path\u INFO'],'/')
),但不知道如何动态创建页面


任何帮助都将不胜感激,请提前感谢

您可能需要查看Apache Rewrites以重写您的URL:


您可能需要查看Apache重写来重写您的URL:


将其设置为GET变量,如

http://www.example.com?size=400x200 
然后您可以使用

$size = $_GET['size'];
我建议您做的是基于split或explode()获取值


将其设置为GET变量,如

http://www.example.com?size=400x200 
然后您可以使用

$size = $_GET['size'];
我建议您做的是基于split或explode()获取值


我不知道动态创建页面是什么意思,但我想使用
mod_rewrite
是您需要的

.htaccess
文件中,您必须创建一些规则,将URL重写为可通过PHP脚本(如从URL)区分的内容

http://www.example.com/400x200
得到

http://www.example.com/index.php?param=400x200
然后您可以在
index.php
script中执行
echo$\u GET['param']


谷歌一些关于PHP和mod_rewrite的信息:

不知道动态创建页面是什么意思,但我想使用
mod_rewrite
是你需要的

.htaccess
文件中,您必须创建一些规则,将URL重写为可通过PHP脚本(如从URL)区分的内容

http://www.example.com/400x200
得到

http://www.example.com/index.php?param=400x200
然后您可以在
index.php
script中执行
echo$\u GET['param']


谷歌一些关于PHP和mod_rewrite的东西:

假设您使用的是Apache,这可以通过一种叫做。在文档根目录中创建名为
.htaccess
的文件,并添加以下内容:

# Turn URL rewriting on
RewriteEngine on
Options +FollowSymlinks

# Rewrite rule
RewriteRule ^(\d+x\d+)/?$ index.php?dimensions=$1 [L]
前两行打开重写引擎,第三行定义
重写规则。第一部分
^(\d+x\d+/?$
是一个正则表达式,域后的URL部分将与之匹配

第二部分
index.php?dimensions=$1
是将被重写的URI。客户端没有看到这一点,但PHP会看到

如果我在
index.php
中使用URL
http://localhost/400x300
,我明白了:

Array ( [dimensions] => 400x300 )
这是PHP中标准的
$\u GET
超全局数组,可以正常使用。URL重写使URL保持在浏览器中的状态,但允许您使用查询字符串将其转换为PHP可用的URL


为了使脚本更易于使用,可以将表达式拆分为单独的X和Y值:

RewriteRule ^(\d+)x(\d+)/?$ index.php?x=$1&y=$2 [L]
这将产生如下数组:

Array ( [x] => 400, [y] => 300 )
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

假设您使用的是Apache,那么可以使用名为。在文档根目录中创建名为
.htaccess
的文件,并添加以下内容:

# Turn URL rewriting on
RewriteEngine on
Options +FollowSymlinks

# Rewrite rule
RewriteRule ^(\d+x\d+)/?$ index.php?dimensions=$1 [L]
前两行打开重写引擎,第三行定义
重写规则。第一部分
^(\d+x\d+/?$
是一个正则表达式,域后的URL部分将与之匹配

第二部分
index.php?dimensions=$1
是将被重写的URI。客户端没有看到这一点,但PHP会看到

如果我在
index.php
中使用URL
http://localhost/400x300
,我明白了:

Array ( [dimensions] => 400x300 )
这是PHP中标准的
$\u GET
超全局数组,可以正常使用。URL重写使URL保持在浏览器中的状态,但允许您使用查询字符串将其转换为PHP可用的URL


为了使脚本更易于使用,可以将表达式拆分为单独的X和Y值:

RewriteRule ^(\d+)x(\d+)/?$ index.php?x=$1&y=$2 [L]
这将产生如下数组:

Array ( [x] => 400, [y] => 300 )
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
请求URI(
/400x200
)存储在服务器超全局:
$\u服务器[“请求URI”]

您需要采用该方法并相应地路由URI。最简单的可能场景:在index.php中,放置以下代码:

$uri = trim($_SERVER["REQUEST_URI"],"/");

if (preg_match("/\d+x\d/")) {
    list($width,$height) = explode("x",$uri);
    // some logic with the above vars, e.g. include a view script
}
这样做的目的是检查URI的格式是否为
{number}x{number}
,提取这两个数字并将它们存储在变量
$width
$height
中。然后,您可以对变量执行任何您喜欢的操作

为了使请求始终指向包含此代码的文件,请编辑.htaccess并输入如下内容:

Array ( [x] => 400, [y] => 300 )
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]
(如果有人请求,.htaccess代码从默认的Zend Framework项目复制而来)。

请求URI(
/400x200
)存储在服务器超全局:
$\u服务器[“请求URI”]

您需要采用该方法并相应地路由URI。最简单的可能场景:在index.php中,放置以下代码:

$uri = trim($_SERVER["REQUEST_URI"],"/");

if (preg_match("/\d+x\d/")) {
    list($width,$height) = explode("x",$uri);
    // some logic with the above vars, e.g. include a view script
}
这样做的目的是检查URI的格式是否为
{number}x{number}
,提取这两个数字并将它们存储在变量
$width
$height
中。然后,您可以对变量执行任何您喜欢的操作

为了使请求始终指向包含此代码的文件,请编辑.htaccess并输入如下内容:

Array ( [x] => 400, [y] => 300 )
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

(如果有人问,.htaccess代码是从默认的Zend Framework项目复制的)。

我试过——问题是如何将GET变量重写为URL的较短形式OP在他们的问题中给出了他们的URL示例。您的示例假设他们想要/可以更改URL以使用查询字符串。我尝试过-问题是如何将GET变量重写为URL的较短形式OP在他们的问题中给出了他们的URL示例。您的示例假设他们想要/可以更改URL以使用查询字符串。“他们似乎没有给出正确的结果”有点含糊不清。会发生什么?如果您转到url/index.php/600