我可以从浏览器中将文件夹名称捕获到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
谢谢!
答案 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用于多个规则。