【发布时间】:2015-03-23 00:15:32
【问题描述】:
我想我已经很接近了。我将 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/ 运行我的整个后端。
为什么?我觉得这种设置在服务器上运行时会非常可靠和优雅。我希望能够将我的项目文件夹实时推送到一个站点,并且它工作得很好,而不必使用黑客来处理本地与服务器。
.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>
现在在前端和后端网络目录中,它们都有相同的.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/admin 加载 backend/web 并仅显示 http://localhost/yii2app/admin。显然,他们会附上各自的controller/action。所以管理员可能看起来像http://localhost/yii2app/admin/site/login
注意:我没有玩过任何文件。这是一个股票 yii2 高级设置,使用作曲家,并遵循文档。到目前为止,我唯一玩过的是提到的 htaccess 文件。
谢谢!
【问题讨论】:
-
或者...您可以学习如何在您的计算机上设置虚拟主机并完成类似这样的骇人听闻的事情。你为什么要制造一个问题,然后试图找到一个愚蠢的解决方案? Google 虚拟主机和您拥有的任何操作系统,并学习以正确的方式进行操作
-
我已经知道 vhosts,虽然我觉得我不应该为 Yii2 测试箱创建一个虚拟主机来解决这个问题。
-
您不必对此无礼。如果您太费心回答或提供帮助,请不要发帖并继续前进。为什么我要为我运行或测试的每一件事设置 100 个虚拟主机...
-
您可以为您的域定义您的虚拟主机的 DocumentRoot 与 web 目录(/path to directory/backend/web),因此它通过进入域而不显示它来打开 web 目录。您不一定需要添加 htaccess 规则。
标签: php apache .htaccess mod-rewrite yii2