如何在 Laravel/OctoberCMS 网站的单独项目的子目录中设置/访问页面?

问题描述

我有一个运行我构建的 OctoberCMS 主题的网站。它运行在来自 DigitalOcean 的服务器上。我需要在同一台服务器上添加一个单独的项目(即来自 matomo 分析的代码)并访问一个公共页面(例如 my_site.com/matomo)。我是 Laravel 和服务器配置的新手,我不确定我需要如何配置 index.PHP 文件或 .htaccess 之类的文件,以便我可以访问 my_site.com/matomo

这是我的文件结构

/var/www/html/
     index.PHP (serves the pages of my project)
     artisan
     bootstrap/
     config/
     modules/
     plugins/
     server.PHP
     storage/
     themes/
     vendor/
     matomo/ (for installing the analytics for the site)
         index.PHP 
         matomo.PHP
         piwik.PHP
         config/
         a number of other files I can enumerate if necessary

我已经关注了 matomothe instructions 但无济于事。当我尝试访问 my_site.com/matomo 时,我只是从我的网站获得了一个 404,其中包含我的主题格式。

我知道这应该不难。谢谢!

编辑:根据需要,我网站的主页位于 my_site.com。各个页面位于 my_site.com/page_name。这符合我的目的。

现在,对于 matomo,说明说:

打开您的 FTP 客户端并以“二进制模式”将 matomo 文件上传到您的网络服务器上的所需位置。例如,使用 Filezilla FTP 客户端,您可以在顶部菜单传输 > 传输类型 > 二进制中启用二进制模式传输)。所有文件都可以上传到公共 www 文件夹中的“analytics”子目录,例如 http://yourdomain.org/analytics/ 或者您可以在自己的子域中设置 matomo上传所有文件http://analytics.example.org/ 如果您可以通过 SSH 访问您的服务器,则可以使用它代替 FTP,因为它要快得多:运行 wget https://builds.matomo.org/matomo.zip && unzip matomo.zip

因此,我使用 wget 选项将其添加到我认为是“公共 www 文件夹”/var/www/html 的位置。所以这些说明让我相信我可以去 my_site.com/analytics/ 然后查看 GUI 网页以进行进一步的安装和设置。但是,这不起作用,因为它需要为我网站的其余部分设置的 404 页面。我也不知道我希望它能够工作,因为 matomo 中没有一个文件文件夹被命名为“分析”——我也试过 my_site.com/matomo 作为记录。所以,这就是说,我不知道 matomo 页面出现在哪里。

解决方法

您不需要修复 index.php 中的任何内容。分析计数器可以添加到页面的布局(~/themes/mytheme/layout/mylayout.htm)之间

<head>
...
</head>

<body>
...
</body>

根据您的仪表指示

,

我对 Matomo 没有任何经验,但从问题中我了解到您想将两个软件 X 安装为 CMS,Y 安装为 Matomo

您的网络服务器(我假设 Apache 是网络服务器)将向以下路径提供所有请求:/var/www/html/index.php。属于软件 X。您的请求 my_site.com/matomo 将提供给软件 X,并且由于 X 不希望此请求,因此会输出 404 Not Found 错误。

第一个解决方案:这是一个糟糕的解决方案,更难的解决方案是编辑 /var/www/html/index.php 并将其与 Y index.php 结合,如果请求在 URL 中有 matomo。 >

第二种解决方案:最佳且更好的解决方案是分离 X 和 Y。它可以通过多种方式实现:

  • 您可以合并/var/www/html/x下文件夹中的所有X文件,以及/var/www/html/y下文件夹中的所有Y文件。然后您可以使用以下 URL my_site.com/x 访问 x,使用 my_site.com/y 访问 y。

  • 如果第一种方式不可行,因为您需要将 X 作为根 URL,例如 my_site.com。然后就可以合并以下文件夹/var/www/html/matomo下的所有Y文件。然后你需要创建子域(Y的虚拟主机)。

使用 Ubuntu 和 Apache 创建虚拟主机:

sudo touch /etc/apache2/sites-available/matomo.my_site.com.conf

然后使用您喜欢的文本编辑器编辑文件,我将使用 nano

sudo nano /etc/apache2/sites-available/matomo.my_site.com.conf

并粘贴以下代码:

<VirtualHost *:80>
    ServerAdmin admin@my_site.com
    ServerName matomo.my_site.com
    DocumentRoot /var/www/html/matomo/
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

my_site.com 更改为您的域。

然后你需要启用虚拟主机

sudo a2ensite /etc/apache2/sites-available/matomo.my_site.com.conf

然后重启apache看看结果。

sudo systemctl restart apache2

您的 matomo 将位于以下 URL matomo.my_site.com

如果您不使用 Ubuntu 或 Apache,请告诉我您使用什么来更新我的答案。

,

https://github.com/octobercms/october/issues/1615。您需要添加要允许访问的文件夹作为 10 月 CMS .htaccess 的排除项,然后还禁用禁止运行除 index.php 之外的任何 PHP 文件的行。

因此将 RewriteEngine On 替换为

RewriteEngine On

# Allow access to Matomo
RewriteRule ^(matomo)($|/) - [L]

然后注释掉 RewriteCond %{REQUEST_FILENAME} \.php$ 使其变为 # RewriteCond %{REQUEST_FILENAME} \.php$

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...