2012-11-05 272 views
4

我試圖解決這個問題超過兩個小時了。 我有一個使用.htaccess來管理網址的個人網站。 它看起來像這樣:.htaccess RewriteRule返回空白頁

RewriteEngine on 
RewriteBase/
... 
RewriteRule ^sklad/?$ index.php?action=sklad 
RewriteRule ^sklad/user/([0-9]+)?$ index.php?action=sklad&user=$1 
RewriteRule ^sklad/folder/(.+)?$ index.php?action=sklad&folder=$1 
RewriteRule ^sklad/file/(.+)?$ engine/ajax/sklad.php?file=$1 
RewriteRule ^sklad/logout/?$ index.php?action=sklad&op=logout 
... 
RewriteRule ^admin/?$ admin.php 
RewriteRule ^admin/news/?$ admin.php?action=news 

前五那些做工精細。 admin/工作正常。但是當我嘗試訪問時,我收到一個空白頁。 Apache沒有顯示或記錄錯誤,並且沒有輸出。 admin.php?action = news工作正常。

sklad/admin/文件夾物理上存在於服務器上。 當我管理/文件夾重命名爲其他的最後一個重寫規則更改爲類似

RewriteRule ^admin123/news/?$ admin.php?action=news 

我可以訪問爲admin123 /新聞/。如果它與服務器上存在的實際文件夾有關,那麼爲什麼前五條規則正在工作?這沒有意義。

我的想法,希望這裏有人可以幫助...

+1

是否有一個文件以'/ admin /'文件夾? –

+0

是的,它被稱爲news.php ...我重命名了文件,現在很好,謝謝!不知道這個,很不明顯的錯誤(或不是?) – Afftamat

回答

2

是的,它被稱爲news.php ...我重命名文件和exerything現在是好的,謝謝!不知道這個,很不明顯的錯誤(或不?)

這不是一個錯誤,它聽起來像內容談判(通過mod_negotiation)打開,它正在做你不想要的東西。協商可以通過類型圖或MultiViews選項打開。 Typemaps有點顯式設置,所以我假設你既然不知道爲什麼發生這種情況,你還沒有設置映射到news.php的特定類型。所以你可能已經打開了多視圖。您可以通過從Options語句中刪除它關掉它:

# remove this word -----------v 
Options Indexes FollowSymLinks Multiviews 

這可以在任何地方,在你的htaccess,服務器配置,虛擬主機的配置,一些配置包括文件等。所以你也可以在你的htaccess文件中明確地取消設置(只要你沒有明確地將它設置在同一個文件中):

Options -Multiviews 
+0

在我的.htaccess中將'-Multiviews'添加到'Options',並解決了問題。謝謝! – Afftamat

0

我不是好與htaccess以及正則表達式,但我認爲管理/新聞會落入你的第一個htaccess的規則。

RewriteRule ^admin/?$ admin.php 

它不會繼續上管理你的第二個規則是:

RewriteRule ^admin/news/?$ admin.php?action=news 

它我正面臨前同樣的問題。

試着修改你的admin.php,echo /打印一些東西,當沒有參數傳遞。類似這樣的:

if($_GET['action']) 
    { 
     echo 'With Parameters'; 
    } 
    else 
    { 
     echo 'No Parameters pass'; 
    } 

調試它的方式。

+0

沒有任何'$ _GET ['action']'defined - meta,header,登錄表單(如果沒有活動會話)或歡迎頁面和頁腳... – Afftamat