2012-10-10 44 views
0

在配置Restler它建議創建以下重寫規則:的RewriteCond:未知標誌「QSA」

DirectoryIndex index.php 
<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteRule ^$ index.php [QSA,L] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ index.php [QSA,L] 
</IfModule> 

我在REST目錄的根把這個變成一個.htaccess文件,但我發現此規則正在觸發時出現500服務器錯誤。該錯誤消息Apache的錯誤日誌:

[Wed Oct 10 10:39:30 2012] [alert] [client 127.0.0.1] /public/api/.htaccess: RewriteCond: unknown flag 'QSA' 
[Wed Oct 10 10:39:30 2012] [error] [client 127.0.0.1] File does not exist: /public/favicon.ico 

我認爲缺少favicon.ico的文件可以忽略不計,但我關心的「未知標誌「QSA」錯誤。我對重寫規則知之甚少,所以任何幫助都會受到讚賞。

對於那些熟悉Restler的人,我使用的是3.0.0rc2(如果有的話)。另外值得指出的是,使用顯式調用index.php的作用非常大,因爲我得到了一個404 JSON錯誤響應(一個積極的改進),但如上所述,如果我依賴於重寫規則,那麼我只會得到一個500服務器錯誤:

http://localhost/api/index.php/say/hi - WORKS (gives JSON 404 error) 
http://locahost/api/say/hi    - 500 SERVER ERROR 

回答

0

有趣......我一直在尋找到我的JSON 404的消息,發現這個帖子:

Restler always returns not found

它不僅解決了我的404錯誤,但也有助於固定的500服務器錯誤。我唯一需要做的就是將http.conf的AllowOverride改爲All。

如果有人能告訴我,我還是會有興趣爲什麼會發生這種情況,但現在確實有效。

1

  1. 它看起來並不像錯誤有什麼關係,你有規則:

    /public/api/.htaccess: RewriteCond: unknown flag 'QSA'

which says that the QSA flag is an unknown flag for a RewriteCond , followed by a favicon.ico not found so I'm guessing that it's unrelated to requests into your REST directory.

  1. 如果你有AllowOverride None,那麼你的htaccess文件僅僅是將是徹底被忽視。配置選項的不同方面可以在htaccess文件中覆蓋,None表示htaccess不能覆蓋任何配置,因此它會被忽略。

  2. 這裏不需要QSA標誌。當您重寫查詢字符串並且希望將原始查詢字符串追加到最後時,您只需要它。默認情況下,查詢字符串是反正追加。