问题描述
我已经在 Raspbian 上安装了 Codeigniter 4,一切似乎都运行良好。
我的网络目录是 /var/www/html
里面有两个文件夹,其中包含两个不同的 Codeigniter-4 应用程序,我想用它们来调用:
-
blue.ddns.net
->/var/www/html/blue/public/index.PHP
-
black.ddns.net
->/var/www/html/black/public/index.PHP
所以我创建了一个 .htaccess
文件放在文件夹 /var/www/html/
中来处理这两个请求
好吧,我仍处于第 0 步,因为我无法使 .htaccess
文件正常工作。
下面附上文件的副本:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /var/www/html
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ blue/public/index.PHP?/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 /index.PHP
</IfModule>
Rewrite 模块被激活
/var/log/apache2/error.log
中出现的错误是:
/var/www/html/.htaccess: Expected </IfModule> before end of configuration,referer: https://blue.ddns.net/
解决方法
这不应该在您的 htaccess 中完成。您应该在 apache 虚拟主机中进行设置。
进入您的网站可用文件夹。
$ cd /etc/apache2/sites-available
创建一个名为 blue.ddns.net.conf 的新虚拟主机
$ touch blue.ddns.net.conf
使用 nano 或您可能喜欢的任何其他文本编辑器打开该文件并添加以下内容。
<VirtualHost *:80>
ServerAdmin your@email.com
DocumentRoot /var/www/html/blue/public
ServerName blue.ddns.net
ServerAlias blue.ddns.net
<Directory "/var/www/html/blue/public">
allow from all
AllowOverride All
Options None
Require all granted
</Directory>
RewriteEngine on
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
RewriteCond %{SERVER_NAME} =blue.ddns.net
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
保存并关闭文件。
然后使用以下内容将其添加到您的 apache:
$ sudo micro blue.ddns.net.conf
对其他 codeigniter 安装重复相同的过程并重新启动 apache。
$ sudo service apache2 restart
应该可以。
现在,如果你想覆盖一些配置,你可能会在 htaccess 文件中为每个 codeigniter 4 安装做一些事情。
,我一直从事托管工作,从不需要进行 Apache 配置。 但现在我发现了 Raspberry/Linux 世界。 由于您的回答,我能够更好地理解问题并通过以下方式解决它(目前):
现在我的配置文件 000-default.conf
(端口 80)和 000-default-le-ssl.conf
(端口 443)都包含以下代码:
<Directory "/var/www/html">.
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
在 /var/www/html
中,我使用以下代码创建了一个 .htaccess 文件:
# Disable directory browsing
Options All -Indexes
<IfModule mod_rewrite.c>.
RewriteEngine On
RewriteCond "%{HTTP_HOST}" "black\.ddns\.net"
RewriteRule ^(.*)$ black/public/index.php?/$1 [L]
RewriteCond "%{HTTP_HOST}" "blue\.ddns\.net"
RewriteRule ^(.*)$ blue/public/index.php?/$1 [L]
</IfModule>
<IfModule !mod_rewrite.c>
ErrorDocument 404 /index.php
</IfModule>
应用程序位于
/var/www/html/blue
和 /var/www/html/black
这是一个非常简单的解决方案,可以满足我的目的。 虽然我觉得不是很优雅 你怎么看?