Slim Framework 删除 URL 中的 public 文件夹
Slim Framework remove public folder in URL
有一个类似的 ,但我仍然需要在我的 URL 中包含 public
文件夹。
当前 URL:https://my-domain.com/api/public/pins
我想要的:https://my-domain.com/api/pins
这是我的项目结构
如您所见,我有 2 个 .htaccess 文件,我应该在哪里以及如何编写 .htaccess 脚本来重定向 public
文件夹?
.htaccess
在 public
文件夹中
# Redirect to front controller
RewriteEngine On
# RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
.htaccess
在 root
文件夹中
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/ [L]
这是一个“内部重定向”到 public 目录的例子:
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/ [L]
public/
目录中的 .htaccess
可能包含以下内容:
# Redirect to front controller
RewriteEngine On
# RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
在 Slim 4 中:确保设置正确的 Slim basePath。
$app->setBasePath('/api');
查看文档:https://www.slimframework.com/docs/v4/start/web-servers.html#apache-configuration
在 Slim 3 中:按如下方式修补 Slim 环境。
$container['environment'] = function () {
$scriptName = $_SERVER['SCRIPT_NAME'];
$_SERVER['REAL_SCRIPT_NAME'] = $scriptName;
$_SERVER['SCRIPT_NAME'] = dirname(dirname($scriptName)) . '/' . basename($scriptName);
return new Slim\Http\Environment($_SERVER);
};
有一个类似的 public
文件夹。
当前 URL:https://my-domain.com/api/public/pins
我想要的:https://my-domain.com/api/pins
这是我的项目结构
如您所见,我有 2 个 .htaccess 文件,我应该在哪里以及如何编写 .htaccess 脚本来重定向 public
文件夹?
.htaccess
在 public
文件夹中
# Redirect to front controller
RewriteEngine On
# RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
.htaccess
在 root
文件夹中
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/ [L]
这是一个“内部重定向”到 public 目录的例子:
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/ [L]
public/
目录中的 .htaccess
可能包含以下内容:
# Redirect to front controller
RewriteEngine On
# RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
在 Slim 4 中:确保设置正确的 Slim basePath。
$app->setBasePath('/api');
查看文档:https://www.slimframework.com/docs/v4/start/web-servers.html#apache-configuration
在 Slim 3 中:按如下方式修补 Slim 环境。
$container['environment'] = function () {
$scriptName = $_SERVER['SCRIPT_NAME'];
$_SERVER['REAL_SCRIPT_NAME'] = $scriptName;
$_SERVER['SCRIPT_NAME'] = dirname(dirname($scriptName)) . '/' . basename($scriptName);
return new Slim\Http\Environment($_SERVER);
};