SuiteCRM 8很多地方(报价、工作室)出现undefine报错

问题描述:

大家好,我正在安装SuiteCRM,它在报价模块中产生了一个undefine错误,在开发者工具显示来自 /custom/jsLanguage/en_us.js 目录的错误。在这种情况下有什么帮助吗?其余的 crm 工作没有问题.

undefine报错
undefine报错

官方提示1:

你能检查RewriteBase一下public/legacy/.htaccess文件吗?它有像/legacy的值吗?

解决方案1:

非常感谢,我解决了,把.htaccess文件改成^//如下

<IfModule mod_rewrite.c>
    Options +SymLinksIfOwnerMatch
    Options -Indexes
    Options -MultiViews
    RewriteEngine On
    RewriteBase /
    RewriteRule /cache/jsLanguage/(.._..).js$ index.php?entryPoint=jslang&modulename=app_s$
    RewriteRule /cache/jsLanguage/(\w*)/(.._..).js$ index.php?entryPoint=jslang&modulename$

    # --------- DEPRECATED --------
    RewriteRule /api/(.*)$ - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteRule /api/(.*?)$ lib/API/public/index.php/$1 [L]
    # -----------------------------

    RewriteRule /Api/(.*)$ - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteRule /Api/access_token$ Api/index.php [L]
    RewriteRule /Api/V8/(.*?)$ Api/index.php [L]
</IfModule>
<IfModule mod_headers.c>

原代码如下:

<IfModule mod_rewrite.c>
    Options +SymLinksIfOwnerMatch
    Options -Indexes
    Options -MultiViews
    RewriteEngine On
    RewriteBase /publiclegacy/
    RewriteRule ^cache/jsLanguage/(.._..).js$ index.php?entryPoint=jslang&modulename=app_strings&lang=$1 [L,QSA]
    RewriteRule ^cache/jsLanguage/(\w*)/(.._..).js$ index.php?entryPoint=jslang&modulename=$1&lang=$2 [L,QSA]

    # --------- DEPRECATED --------
    RewriteRule ^api/(.*)$ - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteRule ^api/(.*?)$ lib/API/public/index.php/$1 [L]
    # -----------------------------

    RewriteRule ^Api/(.*)$ - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteRule ^Api/access_token$ Api/index.php [L]
    RewriteRule ^Api/V8/(.*?)$ Api/index.php [L]
</IfModule>

解决后的效果

Suite CRM8报价页面
Suite CRM8工作室页面

官方提示2:

也可以检查一下你的遗产.htaccess吗?在public/legacy/.htaccess

如果您vhost直接指向 SuiteCRM 的公共文件夹,RewriteBase则上述文件应类似于:

RewriteBase /legacy

如果您的实例位于 https://<some-host>.com/subfolder/

你的RewriteBase应该是:

RewriteBase /subfolder/public/legacy

解决方案2:

修改 .htaccess 文件

修改 htaccess
修改 htaccess

修改后的 .htaccess 文件

修改后的 .htaccess  文件
修改后的 .htaccess 文件

解决方案3:(适用V8+版本)20230927

SuiteCRM 8+版本,通常在Public/legacy 文件夹下面有个.htaccess 文件。默认的 RewriteBase设置时 /legacy/

<IfModule mod_rewrite.c>
    Options +SymLinksIfOwnerMatch
    Options -Indexes
    Options -MultiViews
    RewriteEngine On
    RewriteBase /legacy/
    RewriteRule ^cache/jsLanguage/(.._..).js$ index.php?entryPoint=jslang&modulename=app_strings&lang=$1 [L,QSA]
    RewriteRule ^cache/jsLanguage/(\w*)/(.._..).js$ index.php?entryPoint=jslang&modulename=$1&lang=$2 [L,QSA]

    # --------- DEPRECATED --------
    RewriteRule ^api/(.*)$ - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteRule ^api/(.*?)$ lib/API/public/index.php/$1 [L]
    # -----------------------------

    RewriteRule ^Api/(.*)$ - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteRule ^Api/access_token$ Api/index.php [L]
    RewriteRule ^Api/V8/(.*?)$ Api/index.php [L]

也可以不修改默认的 RewriteBase设置时 /legacy/

我们可以把站点的根目录设置到文件夹 Public/,这个如果使用的是 BT宝塔面板会比较好处理,因为后台可视化面板可以直接设置,指向站点某一个文件夹下。

也可以自行配置,配置路径通常是:/etc/apache2/sites-available(其他文件不需要修改)

然后找到具体对应网站的.vhost,修改网站指向的目录。

通常需要修改7处左右,如果加了SSL证书的情况。

修改完成之后,重启下aparch。

systemctl restart apache2

完成后,就可以直接域名访问SuiteCRM,不需要再在域名后面加public了。同时解决了 SuiteCRM的 undefine 错误。

滚动至顶部