2016-12-06 31 views
0

在我的Linux服務器我有以下的.htaccess:Windows下的Apache的.htaccess重寫規則錯誤

Options FollowSymLinks 
RewriteEngine On 
RewriteRule ^page/([^-]*)/([^-]*)$ index.php?module1=page&module2=$1&$2 [L] 
RewriteRule ^page/([^-]*)$ index.php?module1=page&module2=$1 [L] 
RewriteRule ^game/([^-]*)/([^-]*)$ index.php?module1=game&module2=$1&$2 [L] 
RewriteRule ^game/([^-]*)$ index.php?module1=game&module2=$1 [L] 
RewriteRule ^admin/([^-]*)/([^-]*)$ index.php?module1=admin&module2=$1&$2 [L] 
RewriteRule ^admin/([^-]*)$ index.php?module1=admin&module2=$1 [L] 

現在我想將它放在我的Windows 7,我使用WebServ作爲服務器(這是建立在Apache2的頂部)。

如果我複製粘貼的.htaccess那麼它在HTTP錯誤500

我要評論有FollowSymLinks,使其工作結束。 但重寫仍然沒有工作。 我已經試過:

  • 改變所有

    的AllowOverride XXX所有的AllowOverride中的Apache2/conf目錄/在同一個文件httpd.conf

  • 我有:

    的LoadModule rewrite_module modules/mod_rewrite.so(無評論)

所以問題是: 1.爲什麼選項FollowSymLinks結束於http錯誤500 2.爲什麼重寫不工作?

最好的祝願

+0

MS-Windows環境中不存在符號鏈接。它們是unix/linux傳統的概念,在MS-Windows下沒有直接相應的功能。這可能意味着該選項在該http服務器中不存在,如果它特別爲該環境創建的話。 – arkascha

+0

我們不能多說,因爲我們無法訪問您的系統和所有信息。你必須把它交給我們。這開始於:你真正的意思是什麼「但是重寫仍然不起作用」?並且_please_將http服務器錯誤日誌文件的相關部分添加到問題中。 – arkascha

+0

「重寫仍然沒有工作」,因爲如果我去myurl /遊戲/概述它說錯誤404,而不是重寫它index.php?module1 = game&module2 = $ 1&$ ​​2 –

回答

0

調試很難。當你沒有足夠的事實時,調試是非常困難的。你需要更多的事實。不是虛構的事實,真實的事實。要獲得更多真實的信息,請打開日誌記錄。如果運行Apache 2.4,see this。做這樣的事情:

LogLevel alert rewrite:trace3 

去閱讀日誌,它會告訴你詳細的重寫正在做什麼。如果沒有足夠的細節,請將其提升至trace6。我的經驗是,500通常是(並非總是)由無限循環引起的。祝你好運!

+0

在我的httpd.conf中,如果我將'LogLevel warn'改爲'LogLevel alert rewrite:trace3',我的服務器不想啓動(它打印LogLevel需要一個參數)。這就是我的apache版本是2.2 –

+0

這不是問題的答案,是嗎? – arkascha

+0

你的意思是我可以將apache升級到2.4? –