根文件夹中的 Silex 的 htaccess 无法按预期工作
htaccess for Silex from the root folder not working as intended
我尝试搜索和使用已经发布的解决方案,但目前没有任何效果,我尝试了几乎所有可能的方法,但没有效果。
这些是应用目录:
localhost/
root/
data/
app/
public/
index.php
.htaccess
htaccess 是这样的:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /root/public/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
</IfModule>
第一个问题是,如果我访问 localhost/root/public,网站会按预期工作,但在 url 中,我仍然看到 'public',我想将其删除。
第二个问题是我的 objective 是从 url localhost/root/ 转到索引,但是现在,如果我转到那里,它只显示文件夹中的文件.
谢谢。
根据要求,这些是我使用的路线:
$app->get('/', function () use ($app) {
// code
})->bind('home');
$app->get('/about-me', function () use ($app) {
// code
})->bind('about-me');
你的系统有两个错误。
首先:
位于根文件夹中的 .htaccess 应该用于删除 URL 的 'public' 部分。其代码如下所示:
RewriteEngine On
RewriteRule ^(.*)$ public/ [L]
它基本上抓取每条路线并将其重定向到 public 文件夹,完全如您所愿!
第二:
您应该在“/public”文件夹中创建另一个 .htaccess 文件,以将所有内容重定向到 index.php 文件。其代码应如下所示:
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
你应该得到以下结构:
localhost/
root/
.htaccess (removes 'public')
data/
app/
public/
index.php
.htaccess (forward to index.php)
这应该可以解决您的两个问题。如果是这样,请通过将我的答案标记为解决问题的答案来将问题标记为已完成。如果没有,请评论您遇到的其他问题!
我尝试搜索和使用已经发布的解决方案,但目前没有任何效果,我尝试了几乎所有可能的方法,但没有效果。
这些是应用目录:
localhost/
root/
data/
app/
public/
index.php
.htaccess
htaccess 是这样的:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteBase /root/public/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
</IfModule>
第一个问题是,如果我访问 localhost/root/public,网站会按预期工作,但在 url 中,我仍然看到 'public',我想将其删除。
第二个问题是我的 objective 是从 url localhost/root/ 转到索引,但是现在,如果我转到那里,它只显示文件夹中的文件.
谢谢。
根据要求,这些是我使用的路线:
$app->get('/', function () use ($app) {
// code
})->bind('home');
$app->get('/about-me', function () use ($app) {
// code
})->bind('about-me');
你的系统有两个错误。
首先: 位于根文件夹中的 .htaccess 应该用于删除 URL 的 'public' 部分。其代码如下所示:
RewriteEngine On
RewriteRule ^(.*)$ public/ [L]
它基本上抓取每条路线并将其重定向到 public 文件夹,完全如您所愿!
第二: 您应该在“/public”文件夹中创建另一个 .htaccess 文件,以将所有内容重定向到 index.php 文件。其代码应如下所示:
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
你应该得到以下结构:
localhost/
root/
.htaccess (removes 'public')
data/
app/
public/
index.php
.htaccess (forward to index.php)
这应该可以解决您的两个问题。如果是这样,请通过将我的答案标记为解决问题的答案来将问题标记为已完成。如果没有,请评论您遇到的其他问题!