.htaccess和CakePHP的TinyMCE错误

时间:2013-11-28 21:47:33

标签: .htaccess cakephp tinymce

在生产环境中包含TinyMCE js文件时遇到了一些麻烦。

问题:

  • Evertything工作得很好但是tinymce.min.js无法加载。当我尝试在浏览器中看到该文件时,它似乎是空白的。我发现该请求有500个服务器错误,所以我认为.htacess重写可能就是原因。
  • 我制作的任何其他js文件都能正常工作,可以通过它的网址在浏览器中阅读。
  • 如果我更改了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>

1 个答案:

答案 0 :(得分:1)

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

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

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

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

  • 最后查看脚本调用以使用完整的URL加载

    echo $ this-&gt; Html-&gt;脚本('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>

问题解决了!