Yii2:高级应用程序中的独立前端和后端在 XAMPP 上不起作用

Yii2: Separate front and backend in advanced-app doesn't work on XAMPP

我只想通过 www.domain.com\admin 访问后端部分,通过 www.domain.com 访问前端。我在根 .htaccess 中所做的是:

Options -Indexes
# follow symbolic links
Options FollowSymlinks
RewriteEngine on

RewriteCond %{REQUEST_URI} ^/admin/$
RewriteRule ^(admin)/$ / [R=301,L]
RewriteCond %{REQUEST_URI} ^/admin
RewriteRule ^admin(/.+)?$ /backend/web/ [L,PT]

RewriteCond %{REQUEST_URI} ^.*$
RewriteRule ^(.*)$ /frontend/web/

它重定向到前端,但无法与后端正常工作。无法意识到问题是什么,因为我在工作中使用相同的配置行并且一切正常。难道是因为XAMPP?我们在我工作场所的 UbuntuApache 服务器上工作。这也是前端和后端(它们很相似):

AddDefaultCharset utf-8

Options +FollowSymLinks
IndexIgnore */*
RewriteEngine on


# Make the backend accessible via url: http://site/admin
RewriteRule ^admin$ $admin.php [L]

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php


RewriteRule ^static - [L]

编辑:我做到了! 我在 httpd-vhost.conf 中设置的是:

<VirtualHost *:8080>
    ServerName fitness
    DocumentRoot "c:/xampp/htdocs/fitness/frontend/web"
</VirtualHost>

问题是我将请求重定向到 frontend/web htaccess,但我真正需要的是根 .htaccess。所以我将 DocumentRoot 更改为 c:/xampp/htdocs/fitness

当我在我们有 ubuntu 的办公室工作时,在设置新项目时,我总是使用以下方式,并且它总是完美无缺。

按照以下步骤,创建 2 个虚拟主机,名称分别为 www.myapp.comadmin.myapp.com

1) 打开终端并输入

  • sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/www.myapp.com.conf.
  • sudo nano /etc/apache2/sites-available/www.myapp.com.conf.

文件打开后添加以下代码。

<VirtualHost *:80>
       ServerName www.myapp.com
       DocumentRoot "/path/to/project/root/frontend/web"

       <Directory "/path/to/project/root/frontend/web">
           # use mod_rewrite for pretty URL support
           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

           # use index.php as index file
           DirectoryIndex index.php

           # ...other settings...
       </Directory>
</VirtualHost>

2) 关闭并保存文件,然后在终端中写入

  • sudo a2ensite www.myapp.com.conf
  • 打开主机文件 sudo nano /etc/hosts 并在末尾添加一个新行 127.0.0.1 www.myapp.com.
  • 重启apachesudo service apache2 restart

3) 对 backend 重复上述步骤,分别更改文件名和 ServerNameDirectoryDirectoryRoot

4) 请确保您在 frontend/webbackend/web 中有一个 .htaccess 文件,其中包含以下

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php

就是这样,除了现在在浏览器中输入 www.myapp.comadmin.myapp.com 之外,您不需要任何其他 .htaccess 文件并查看它是否正常工作。