问题描述:
大家好,我正在安装SuiteCRM,它在报价模块中产生了一个undefine错误,在开发者工具显示来自 /custom/jsLanguage/en_us.js 目录的错误。在这种情况下有什么帮助吗?其余的 crm 工作没有问题.
官方提示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/\ [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/\ [L]
# -----------------------------
RewriteRule ^Api/(.*)$ - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteRule ^Api/access_token$ Api/index.php [L]
RewriteRule ^Api/V8/(.*?)$ Api/index.php [L]
</IfModule>
解决后的效果
官方提示2:
也可以检查一下你的遗产.htaccess
吗?在public/legacy/.htaccess
如果您vhost
直接指向 SuiteCRM 的公共文件夹,RewriteBase
则上述文件应类似于:
RewriteBase /legacy
如果您的实例位于 https://<some-host>.com/subfolder/
你的RewriteBase
应该是:
RewriteBase /subfolder/public/legacy
解决方案2:
修改 .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/\ [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 错误。