【问题标题】:TinyMCE error with .htaccess and CakePHP.htaccess 和 CakePHP 的 TinyMCE 错误
【发布时间】:2013-12-15 00:38:43
【问题描述】:

在我的生产环境中包含 TinyMCE js 文件时遇到了一些问题。

问题:

  • Evertything 运行良好,但 tinymce.min.js 无法加载。当我尝试在浏览器中查看该文件时,它似乎是空白的。我发现该请求出现 500 服务器错误,因此我认为 .htacess 重写可能是原因。
  • 我制作的任何其他 js 文件都可以正常工作,并且可以通过它的 url 在浏览器中读取。
  • 如果我更改 tinymce.min.js 的内容,该文件会被读取并且工作正常。

CakePHP 安装:

它位于共享主机中,我已执行以下操作以使其正常工作:

  • app、plugin、vendor 和 lib 目录是 public_html 目录的上一级。 (在我的情况下是 /home2/username/)

  • 来自 webroot 的内容被复制到 /home2/username/public_html

  • 最后我修改了 Cake 的常量 ROOT 以匹配从 webroot 复制的 index.php 文件中的 /home2/username/。

正如我之前所说,我唯一能想到的就是当 tinymce.min.js 开始包含其他 js 文件时 htaccess 会做一些事情,但我不是 apache 或重写规则方面的专家。其他一切都完美无缺。

观看次数:

javascript 文件包含在使用 html 帮助器的文章的 admin_add 和 admin_edit 视图中,它们不在 head html 标记之间。

<?php echo $this->Html->script('tinymce/tinymce.min'); ?>
<?php echo $this->Html->script('tinymce/init'); ?>

例如,我的 admin_add.ctp 如下所示:

<?php echo $this->Html->script('tinymce/tinymce.min'); ?>
<?php echo $this->Html->script('tinymce/init'); ?>
<div class="articulo prev">
<?php echo $this->Form->create('Articulo'); ?>
    <fieldset>
        <legend><?php echo __('Crear Articulo'); ?></legend>
    <?php
        echo $this->Form->input('titulo');
        echo $this->Form->input('contenido');
        echo $this->Form->input('categoria_id', array('type' => 'select', 'options' => $categorias, 'label' => 'Categoria', 'empty' => 'Seleccionar'));
        echo $this->Form->input('fecha');
        echo $this->Form->input('usuario_id');
    ?>
    </fieldset>
<?php echo $this->Form->end(__('Submit')); ?>
</div>
<div class="links_interes">
    <title><?php echo __('Acciones'); ?></title>
    <ul>
        <li><?php echo $this->Html->link(__('Listar Articulos'), array('action' => 'index')); ?></li>
        <li><?php echo $this->Html->link(__('Listar Usuarios'), array('controller' => 'usuarios', 'action' => 'index')); ?> </li>
        <li><?php echo $this->Html->link(__('Crear Usuario'), array('controller' => 'usuarios', 'action' => 'add')); ?> </li>
    </ul>
</div>

【问题讨论】:

  • 你能展示你的布局吗?我有兴趣看看你如何调用 JS 文件
  • 已编辑帖子以添加其中一个视图的实际代码,谢谢。

标签: .htaccess cakephp tinymce


【解决方案1】:

经过两天的研究,我发现了这个:Why is the JavaScript file parsed as PHP in my Cake plugin?

由于托管限制,我无法尝试该帖子中提到的任何解决方案,无法编辑 php.ini 和 php 函数 symlink();这样不行……

  • 在网站的根目录创建了一个 _noUrlReWrite 目录。
  • 将 tinymce 目录复制到那里。
  • 向 .htaccess 添加了一条规则,因此该目录不受 cake 的重写规则的影响:

    RewriteRule ^_noUrlReWrite/(.*) _noUrlReWrite/$1 [L]

  • 终于用完整的 url 加载脚本调用

    echo $this->Html->script('http://www.sitesdomain.com/_noUrlReWrite/js/tinymce/init.js');

还有工作,然后又出现了另一个问题,tinymce 的工具栏字符看起来很奇怪,就像编码错误。

问题出在 Firefox 上,原因是:Firefox (which supports @font-face from v3.5) does not allow cross-domain fonts by default. This means the font must be served up from the same domain (and sub-domain) unless you can add an “Access-Control-Allow-Origin” header to the font.

然后我在 tinymce 文件夹中创建了另一个 .htaccess:

<FilesMatch "\.(ttf|otf|eot|woff|tiff)$">
    <IfModule mod_headers.c>
        Header set Access-Control-Allow-Origin "*"
    </IfModule>
</FilesMatch>

问题解决了!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-31
    • 2010-11-23
    • 2012-06-28
    • 1970-01-01
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    相关资源
    最近更新 更多