文件夹作为PHP中的参数

And*_*res 3 php

我想创建一个脚本,将网站中请求的每个文件夹作为参数传递.

例如,如果有人请求:

www.example.com/foo
Run Code Online (Sandbox Code Playgroud)

...将被重定向到主index.php并作为参数传递,在请求时获得相同的结果 www.example.com/index.php?foo

请注意,请求的文件夹将是随机的,所以我无法预测文件夹并在那里放置一个PHP脚本.

我应该通过HTACCESS处理所有404请求吗?还是有更高档的解决方案?

Law*_*one 6

在你的网址foo是一个参数键,如果你的意思是这样,那么它有什么价值?

也许您将它与路由结构混淆,您将整个URL传递给处理请求的路由脚本

重写你想要的是:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]
Run Code Online (Sandbox Code Playgroud)

然后在你的索引中你拆分网址如下:

<?php 
$parts = isset($_GET['route']) ? explode('/',$_GET['route']) : array();
?>
Run Code Online (Sandbox Code Playgroud)

然后一个示例URL看起来像: www.example.com/foo/bar/baz

$parts[0] = foo
$parts[1] = bar
$parts[2] = baz
Run Code Online (Sandbox Code Playgroud)

然后,如果你正在寻找文件夹/文件存在,这样的事情:

<?php 
if (isset($parts[0]) && file_exists('./'.basename($parts[0]))) {
    //Folder or file exists
} else {
    //Folder or file does not exist - 404
}
?>
Run Code Online (Sandbox Code Playgroud)