2016-12-05 61 views
0

我所有的請求都被重寫到index.php。請參閱下面的.htaccess文件。網址拋出失敗打開流和頭已發送錯誤

IndexIgnore * 

<IfModule mod_rewrite.c> 

    #Options +FollowSymLinks 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteRule^index.php [L] 
</IfModule> 

# BEGIN EXPIRES 
<IfModule mod_expires.c> 
    ExpiresActive On 
    ExpiresDefault "access plus 10 days" 
    ExpiresByType image/gif "access plus 1 month" 
    ExpiresByType image/png "access plus 1 month" 
    ExpiresByType image/jpeg "access plus 1 month" 
    ExpiresByType image/jpg "access plus 1 month" 

    <IfModule mod_headers.c> 
     Header append Cache-Control "public" 
     </IfModule> 
</IfModule> 
# END EXPIRES 

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

爲了調試起見,我退出了我的index.php的第2行。見下面

<?php 
exit('here'); 
session_start(); 
error_reporting(-1); 
    . 
    . 
    . 

我的index.php當我使用這個網址 -

http://www.example.com/admincp/site/editor/layout?csrf_token=852f2d49ab5d27fd061a164a5e059531&val[page]=feed&val[column]=2&middle[2.23334858434E+12][widget]=content&middle[2.23334858434E+12][settings]=&right[c7ef099029aca9f5d297d79757ea100c][widget]=plugin::ads|ads&right[c7ef099029aca9f5d297d79757ea100c][settings]=&right[eed08f19fa0e3fb7d017e5b32d9eba16][widget]=plugin::blog|latest&right[eed08f19fa0e3fb7d017e5b32d9eba16][settings]=&right[67a8d113cceb768272adedb97e5e349c][widget]=plugin::music|latest&right[67a8d113cceb768272adedb97e5e349c][settings]=&right[31dc5ba68111024770ae8d2f6c12312d][widget]=plugin::page|latest&right[31dc5ba68111024770ae8d2f6c12312d][settings]=&right[d66d56bf471a39e6e2b4ac58b4733304][widget]=plugin::video|latest&right[d66d56bf471a39e6e2b4ac58b4733304][settings]=

一切正常,即「這裏」被顯示在瀏覽器

但是,當我使用這個網址 -

http://www.example.com/admincp/site/editor/layout?csrf_token=852f2d49ab5d27fd061a164a5e059531&val%5Bpage%5D=feed&val%5Bcolumn%5D=2&middle%5B2.23334858434E%2B12%5D%5Bwidget%5D=content&middle%5B2.23334858434E%2B12%5D%5Bsettings%5D=&right%5Bc7ef099029aca9f5d297d79757ea100c%5D%5Bwidget%5D=plugin%3A%3Aads%7Cads&right%5Bc7ef099029aca9f5d297d79757ea100c%5D%5Bsettings%5D=&right%5Beed08f19fa0e3fb7d017e5b32d9eba16%5D%5Bwidget%5D=plugin%3A%3Ablog%7Clatest&right%5Beed08f19fa0e3fb7d017e5b32d9eba16%5D%5Bsettings%5D=&right%5B67a8d113cceb768272adedb97e5e349c%5D%5Bwidget%5D=plugin%3A%3Amusic%7Clatest&right%5B67a8d113cceb768272adedb97e5e349c%5D%5Bsettings%5D=&right%5B31dc5ba68111024770ae8d2f6c12312d%5D%5Bwidget%5D=plugin%3A%3Apage%7Clatest&right%5B31dc5ba68111024770ae8d2f6c12312d%5D%5Bsettings%5D=&right%5Bd66d56bf471a39e6e2b4ac58b4733304%5D%5Bwidget%5D=plugin%3A%3Avideo%7Clatest&right%5Bd66d56bf471a39e6e2b4ac58b4733304%5D%5Bsettings%5D=

我收到以下錯誤。

警告:未知:未能打開流:在 沒有這樣的文件或目錄在網上未知0

警告:不能更改頭信息 - 在 未知已經發出已上線頭0

請注意,這隻發生在特定的服務器上。這兩個URL在其他服務器和本地主機上的工作方式和行爲方式相同。兩個URL之間的區別僅僅是url編碼。

我無法使用第一個URL,因爲當我使用form.AjaxSubmit()函數時,jQuery會自動編碼我的請求主體。

回答

0

mod_rewrite必須在映射它們之前對unescape網址進行映射,因此 反向引用在應用它們時未被轉義。使用B 標誌,在反向引用非字母數字字符將被轉義

於是用B標誌嘗試

RewriteRule^index.php [B,L] 

RewriteRule Flags

其他可能的解釋和解決方案可以在這裏找到:http://dracos.co.uk/code/apache-rewrite-problem/

+0

修改標誌並重新啓動Apache後,問題未解決。不管怎麼說,還是要謝謝你。 – Dipo