2016-09-15 65 views
0

我有一個網站,它依賴於htaccess的重寫規則,我重寫我的網址與這樣的順序:htaccess的重寫規則顯示錯誤在我的錯誤日誌文件

www.example.com/games/car/play/123 

其實沒有目錄爲:

  1. 遊戲
  2. 發揮

我每天都在看我的錯誤日誌中顯示錯誤噸線(S)的說:

File does not exist: /home/example.com/public_html/games 
File does not exist: /home/example.com/public_html/car 
File does not exist: /home/example.com/public_html/play 

我不知道爲什麼阿帕奇考慮這些假冒的目錄,實際真正的目錄?我在我的htaccess的重寫這些代碼行:

RewriteEngine On 
RewriteBase/

RewriteRule ^games/([a-zA-Z0-9-/]+)/play/(.*)$ details.php?slug=$1&id=$2 

現在Apache的考慮:遊戲/蛞蝓/播放/ id作爲目錄,它不只是一個假的URL序列。此外,當我走下來的下部頁:

www.example.com/games/car 而 www.example.com/games

它已經存在的URL,但不是一個目錄我看到一個錯誤日誌說:

File does not exist: /home/example.com/public_html/games/car 
File does not exist: /home/example.com/public_html/games 

我該如何解決這個問題?我已經嘗試了一切可能,但仍然在我的錯誤日誌中出現大量錯誤。

非常感謝(對不起我的英文不好)。

+1

在你的access.log你看到'/ games'或'/ play'等請求嗎? – anubhava

+1

「我不知道Apache爲什麼將這些假目錄當作真實的目錄?」 - 因爲您的'RewriteRule' _pattern_與任何這些網址都不匹配,您或其他人都鏈接到這些網址。如果模式不匹配,那麼Apache別無選擇,只能嘗試請求'/ games'或'/ car'等,這自然會觸發404 Not Found。這些其他網址是否應該有效?如果是的話,他們應該怎樣映射? – MrWhite

+0

@anubhava,是的,我看到/遊戲或/玩太多的日誌錯誤。這些網址是有效的,並且映射到該頁面的category slug:category_details.php,但是for/play它不映射到任何內容。 –

回答

1

嘗試關閉MultiView並添加一些條件檢查。

Options -MultiViews 
RewriteEngine On 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^games/([a-zA-Z0-9-/]+)/play/(.*)$ details.php?slug=$1&id=$2 [L] 
+0

我會試試這個,然後讓你知道如果成功!謝謝 –

+0

非常感謝@巴拿馬傑克,我在錯誤日誌中看不到任何錯誤,在應用您的真棒代碼後全部消失:) Super –