将文件夹名称转换为php中的变量

时间:2019-03-16 18:09:51

标签: php

我可以从浏览器中将文件夹名称捕获到php中的变量中吗?

例如,我访问此链接:

example.com/folder/1928-1293

它应该在我的主容器中

example.com/index.php

我之前尝试过,它可以与htaccess一起使用,但是我需要将它放在index.php中,以使htaccess可以与另一个文件夹一起使用。

<?php
$a = "folder";
$b = "1928-1293";
echo $a . $b;
?>

它会向我显示folder1928-1293

谢谢!

1 个答案:

答案 0 :(得分:0)

如果我的理解正确,那么您希望配置您的网站,以便当有人访问“ example.com/folder/1928-1293”时,您希望该请求由example.com/index.php处理,并且您希望index.php以便能够读取请求中的路径/文件夹。

如果是这样,那么可以。但是,正如您提到的,这仅是您可以使用重写引擎执行的操作(.htaccess是实现它的常用方法)。该.htaccess片段将接收与现有文件夹或文件不匹配的所有请求,并将其发送到index.php:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>

与WordPress基本上具有相同的重写功能。

这样,如果有人要求example.com/otherfolder/otherfile.jpg,而该文件夹/文件实际上是真实的物理文件,则.htaccess文件将不会更改该请求。它将仅路由对物理上不存在的文件夹/文件的请求。

在index.php内,您然后可以在$ _SERVER [“ REQUEST_URI”]变量中查看原始路径/请求,并使用explode()将路径拆分为多个部分:

<?php
// $_SERVER["REQUEST_URI"] = "/folder/1928-1293"
$path_pieces = explode("/",ltrim($_SERVER["REQUEST_URI"],"/"));
echo $path_pieces[0]; // "folder"
echo $path_pieces[1]; // "1928-1293"

如果需要处理.htaccess文件中的更多/其他URL,您还可以将.htaccess用于多个规则。