2013-11-28 45 views
0

我在生產環境中包含TinyMCE js文件時遇到一些麻煩。TinyMCE錯誤與.htaccess和CakePHP

問題:

  • Evertything的偉大工程,但tinymce.min.js加載失敗。當我嘗試在瀏覽器中看到該文件時,它顯示爲空白。我發現該請求有500個服務器錯誤,所以我認爲.htacess重寫可能是原因。
  • 我製作的任何其他js文件都能正常工作,並且可以通過它的url在瀏覽器中閱讀。
  • 如果我更改tinymce.min.js的內容,則讀取文件並正常工作。

CakePHP安裝:

它是在一個共享的主機,我已經做了以下才能正常工作:

  • 應用,插件,供應商和lib目錄是一個升級public_html目錄。 (在我的情況/ HOME2 /用戶名/)

  • 從根目錄內容被複制到/ HOME2 /用戶名/的public_html

  • 最後我修改蛋糕的不斷ROOT匹配/ HOME2 /用戶名/在複製指數來自webroot的.php文件。

正如我以前說過我能想到的唯一的事情就是htaccess的做一些tinymce.min.js開始,包括其他的js文件的時候,但我在Apache或者重寫規則方面的專家。其他一切都很完美。

瀏覽:

JavaScript文件包含在使用HTML幫助文章admin_add和admin_edit的觀點,他們不是頭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> 
+0

你能展示你的佈局嗎?我有興趣看到你如何調用JS文件 –

+0

發佈編輯添加其中一個視圖的實際代碼,謝謝。 – Leo

回答

1

經過兩次天研究,我發現這一點:Why is the JavaScript file parsed as PHP in my Cake plugin?

我不能嘗試任何,所提到的解決方案因爲託管限制後,無法編輯php.ini和php函數的符號鏈接();不起作用,所以...

  • 在網站的根目錄下創建_noUrlReWrite目錄。
  • 在那裏複製了tinymce目錄。
  • 添加規則。htaccess的所以目錄由蛋糕的重寫規則保持不變:

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

  • 最後chaged腳本調用,帶完整的URL

    回聲$這個 - > HTML的「腳本( '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.

然後,我創建了另一個的.htaccess在TinyMCE的文件夾:

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

而問題解決了!