基于url构建PHP页面
如果您有如下url:基于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
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
中使用URLhttp://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
中使用URLhttp://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