2013-04-22 95 views
0

我在MAMP上建立我的網站,幾天後,我終於有了一個.htaccess文件,可以在我的意志之後工作。但是現在,當我上傳到現場環境時,它的行爲並不一樣!有不同的版本嗎?是否因爲我的文件中的錯誤MAMP處理自動?.htaccess MAMP與生活環境的差異

如果不是這些特殊文件,則使用默認的RewriteRule。腳本/圖片/ mediacontent /服務/ robot.txt的作品,但NOT(login.php中,hybridauth,博客)

#start 
Options +FollowSymlinks 
RewriteEngine On 
RewriteBase/

# main site 
RewriteCond %{REQUEST_URI} !^/scripts/(.*\.js)$ 
RewriteCond %{REQUEST_URI} !^/styles/(.*\.css)$ 
RewriteCond %{REQUEST_URI} !^/images/(.*\.jpg|.*\.png|.*\.gif)$ 
RewriteCond %{REQUEST_URI} !^/mediacontent/(.*\.jpg|.*\.png)$ [NC] 
RewriteCond %{REQUEST_URI} !^/services/(.*\.php)$ 
RewriteCond %{REQUEST_URI} !^/login\.php$ 
RewriteCond %{REQUEST_URI} !^/hybridauth/$ 
RewriteCond %{REQUEST_URI} !^/blog/$ [NC] 
RewriteCond %{REQUEST_URI} !^/robot.txt$ 

RewriteRule (\w+) index.php?page=$1 [NC,L] 
+0

對於那些不起作用的東西,我會得到「302 Moved Temporarily」 – Backer 2013-04-22 16:13:21

回答

0

隨着\w+,你不捕獲完整的請求,但它只是某些部分。

Escape sequences

\瓦特
任何 「字」 的字符

A 「字」 的字符是任何字母或數字或下劃線字符

這意味着,點. ,斜線/,連字符-或下劃線_旁邊的任何其他特殊字符包括在內。

從條件看來,您希望從規則中排除所有現有的文件和目錄。你可以達到同樣的用

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^.*$ index.php?page=$0 [L] 

此規則捕獲完整路徑,包括任何特殊字符,並將這index.php。但它也排除了所有真實的文件,如Javascript來源,CSS文件,圖像等。

+0

和我的一樣,但代碼少得多:) 問題仍然出現在文件夾hybridauth和博客中。它可以與這些文件夾中的內容有關嗎? 博客 - 永久鏈接的WordPress的文件夾。 hybridauth - 有一個應該捕獲登錄的index.php文件。 這些文件夾和文件被忽略,我顯示/index.php?page=結果 – Backer 2013-04-22 17:12:18

+0

去http://www.mysite.com/blog/index.php給我一個「500內部服務器錯誤」和http://www.mysite.com/hybridauth/給出「302暫時移動」 – Backer 2013-04-22 17:17:58

+0

現在終於奏效了。我刪除了實時環境中的所有文件,然後再次上傳。必須是第一次上傳時添加的一些奇怪的東西。 – Backer 2013-04-22 18:02:30

0

刪除所有.htaccess文件後,我注意到問題不在重寫中。

我刪除了服務器上的所有文件,並再次上傳,現在它可以正常工作。

自我注意:使用一個良好的FTP應用程序。