2012-03-23 66 views
0

我正在開發一個使用Luracast Restler庫的API。我所需要的是讓index.php從我的URL中「隱藏」,以便保持在RESTful API標準之內。注意!:是的,我啓用了mod_rewrite,是的,我在目錄中有.htaccess文件。我在我的機器上完成這項工作絕對沒有問題,但是當將它移動到生產環境進行一些基本測試時,.htaccess文件似乎行事不同,因爲URL中需要再次使用index.php!Luracast Restler .htaccess不能用mod_rewrite啓用重寫請求

我的開發機器和我的生產機器都在運行窗口。兩者都使用多個虛擬主機。兩者都啓用了mod_rewrite。

我的.htaccess文件是從字面上所提供的例子:

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> 
<IfModule mod_php5.c> 
    php_flag display_errors Off 
</IfModule> 

我們在httpd.conf中具有相同的目錄設置:

<directory "C:\www"> 
    Options FollowSymLinks -Includes -ExecCGI -Indexes -SymLinksIfOwnerMatch 
    order allow,deny 
    Allow from all 
    AllowOverride All 
</directory> 

而我的開發機器上這種配置的偉大工程。當我將它移動到生產環境時,它需要在URL中使用index.php,以便將請求提供給我的index.php文件。如果我從URL中刪除index.php,我從Apache獲得一個404(不是Restler響應)。我在Apache日誌也出現此錯誤:

File does not exist: C:/www/api_website_com/public/classname/function 

這是我的理解是,這的.htaccess應直接重寫我的HTTP請求的index.php,而不是尋找URL就好像它是一個文件。有人有想法嗎?它必須是我忽略的簡單東西。

另請注意,我無法啓用RewriteLog,因爲我無法訪問生產服務器的httpd.conf。

+0

[This thread](https://github.com/Luracast/Restler/issues/36)在Luracast Restler Issues頁面可能會引起一些注意。一探究竟! – Luracast 2012-03-26 03:26:52

+0

不幸的是,這些都無法解決問題。看起來好像將所有請求指向index.php的重寫不正確地重寫請求 - Apache仍然在尋找實際的文件路徑。 – Kevin 2012-03-26 16:11:16

+0

已解決。顯然,有人把下面一行放在httpd.conf中 - 「AccessFileName htaccess.txt」....哇......對不起,這個愚蠢的問題。 – Kevin 2012-03-26 18:44:44

回答

0

此服務器上的htaccess文件被配置爲文本文件。無論出於何種原因,這是一個簡單的修復。