我想我很近。我将htaccess重定向到网站(前端/网络)和/admin
路径(backend/web
)。该网站看起来不错,正在加载CSS文件等。
如果您访问以下网址:http:// localhost / yii2app
/
-它会加载主页,并且不会在地址栏中重定向,但该页面会在所有URL中显示frontend /
web。
如果您访问以下网址:http:// localhost / yii2app /
admin- 它会加载后端登录页面,但是会立即重定向到地址栏中的/ backend /
web / site / login(丑陋)。
问题:frontend/backend
路径显示在URL(地址栏和页面上的链接)中。
我需要的是:我希望整个站点在不显示前端/后端链接的情况下运行。项目的根目录应该从(无形中)拉出frontend/web
而不显示它。.因此,http://
localhost / yii2app /运行我的整个前端,而http:// localhost
/ yii2app / admin /运行我的整个后端。
为什么?我觉得当安装在服务器上时,此设置将非常牢固且优雅。我希望能够将我的项目文件夹实时推送到站点,并且可以正常工作而不必使用黑客来处理本地vs服务器。
.htaccess
目录中的文件/yii2app
:
Options -Indexes
RewriteEngine on
<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} !^/backend/web/(assets|css)/
RewriteCond %{REQUEST_URI} admin
RewriteRule .* backend/web/index.php [L]
RewriteCond %{REQUEST_URI} !^/(frontend|backend)/web/(assets|css)/
RewriteCond %{REQUEST_URI} !admin
RewriteRule .* frontend/web/index.php [L]
</IfModule>
现在在前端和后端Web目录中,它们都具有相同的内容.htaccess
:
RewriteEngine on
# if a directory or a file exists, use the request directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# otherwise forward the request to index.php
RewriteRule . index.php
我不想见/frontend/web
或/backend/web
永远:)
我试图在根目录的htaccess中使用RewriteRule来添加/admin
到URL,但是它一直告诉我/admin
不存在。我 知道
它不存在,并且我不希望它存在。我希望它是一个相对路径。即:/ admin == / backend / web。
换种说法。我将加载项目根目录(http:// localhost / yii2app
/)中的所有内容frontend/web
,但未显示它。另外,要加载http://
localhost / yii2app /
adminbackend/web
并仅显示http:// localhost /
yii2app /
admin。显然,他们将拥有各自的controller/action
依附。因此管理员看起来像http://
localhost / yii2app / admin / site /
login
注意:我尚未播放任何文件。这是一个基于yii2的高级设置,使用composer并遵循了文档。到目前为止,我唯一玩过的就是提到的htaccess文件。
谢谢!
如果您的唯一目标是即使根本不使用.htaccess规则也不会看到/frontend/web
或/backend/web
,则可以执行以下操作:
为什么不只是拉出web
文件夹的内容并将其放在根目录中呢?只需在输入脚本中参考框架和配置文件来调整路径即可index.php
。
您的目录结构如下所示:
- yii2app/
- frontend/
- backend/
- common/
- .. other folders..
- admin/
- assets/
- css/
- index.php
- assets/
- css/
- index.php
您的yii2app/index.php
样子如下:
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/vendor/autoload.php');
require(__DIR__ . '/vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/common/config/bootstrap.php');
require(__DIR__ . '/frontend/config/bootstrap.php');
$config = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/common/config/main.php'),
require(__DIR__ . '/common/config/main-local.php'),
require(__DIR__ . '/frontend/config/main.php'),
require(__DIR__ . '/frontend/config/main-local.php')
);
$application = new yii\web\Application($config);
$application->run();
您yii2app/admin/index.php
将看起来像:
defined('YII_DEBUG') or define('YII_DEBUG', true);
defined('YII_ENV') or define('YII_ENV', 'dev');
require(__DIR__ . '/../vendor/autoload.php');
require(__DIR__ . '/../vendor/yiisoft/yii2/Yii.php');
require(__DIR__ . '/../common/config/bootstrap.php');
require(__DIR__ . '/../backend/config/bootstrap.php');
$config = yii\helpers\ArrayHelper::merge(
require(__DIR__ . '/../common/config/main.php'),
require(__DIR__ . '/../common/config/main-local.php'),
require(__DIR__ . '/../backend/config/main.php'),
require(__DIR__ . '/../backend/config/main-local.html" target="_blank">php')
);
$application = new yii\web\Application($config);
$application->run();
编辑:您的输入脚本可能看起来与我的不同,但是您应该想到更改路径以使用这些示例查找框架文件的想法。
我知道这个问题以前被问过,但没有得到准确的解决方案。我想从我的活动中隐藏ActionBar和NavigationBar,或者为了使其全屏。我尝试了下面的代码在我的活动创建方法,但它显示动作栏几秒钟,而不是让它全屏。在银河S3(Android4.3),它甚至超过一秒钟。所以我怎么能让它完全不可见,我的活动完全从一开始就像全屏一样。我看到许多应用程序只在S3上运行,但它们没有动作栏,甚至没有几秒钟。
多益网络前端二面,问了半个小时场景题,后二十分钟一道算法,八股一道没考,崩不住了#前端##23届找工作求助阵地#
上午十一点,40min 实习项目中学习到什么,写了几个组件,项目中网络缓存如何配置的,难点是什么如何解决的,实习的技术选型有点奇怪,当时问了吗 前端中一般要求首屏资源加载(html、css、js)经过webpack打包后要求为14kb?为什么? 答:首屏响应时间不能过长,说这是表层原因,深层原因是啥???主要是tcp的慢启动算法,第一次连接的时候,不知道网络可以传输多少数据,一般就是10tcp数
HTTPS的工作原理 以百度为例 在百度的服务器端首先使用非对称加密算法生成一个秘钥对 百度将自己的公钥发给 CA 证机构,CA 进行签名,生成证书 客户端访问百度的时候,百度将生成的证书发给客户端 浏览器对收到的证书进行认证 客户端确认证书没有问题后,将百度公钥从证书中取出来 这样我们就得到了百度的公钥 在客户端生成一个随机数,使用百度的公钥进行加密,发给服务器 服务器端使用私钥解密,得到了随机
我的场景是这样的:我有一台配置为反向代理的Apache2.2的机器,另一台在8080端口上有Apache Tomcat7监听的机器。 我的目标是让internet用户访问资源“AM”(部署在Tomcat上)时不使用Tomcat机器的IP地址,而只联系反向代理。 ProxyPass/am http://tomcat_server.com:8080/am ProxyPassReverse/am htt
之前是这样在 debian12 中安装 nodejs18 的 但是通过 apt 安装的 nodejs 是 18,现在需要 20 所以看了一下 nodejs 现在官网的意见,发现 https://nodejs.org/en/download/package-manager 发现默认推荐使用 nvm 安装 nodejs 但是令人感到不幸的是,我感觉安装 nvm 以及 nvm 安装 nodejs 都在跨