2017-05-04 58 views
1

我有.htaccess文件:的.htaccess訪問指定文件

DirectoryIndex index.php 
RewriteEngine on 
RewriteRule ^play/([^/\.]+) index.php?task=view&name=$1 [L] 

顯示網頁遊戲。

我的問題:當我需要加載一些文件(或地址欄訪問)與路徑:/play/Assest/file-name.swf。這返回404錯誤。

我如何可以訪問文件,但不改變以上RewriteRule

我試圖重定向代碼,但它不工作:

RewriteRule ^/play/Assets/file-name.swf ^/games/Assets/file-name.swf [R=301,L] 
+1

「......但不改變上述重寫規則?」 - 這是爲什麼?你無法更改代碼嗎?或者你擔心它可能會改變功能? – MrWhite

回答

1

RewriteRule缺少錨的所以部分匹配仍然會被重寫。添加$這樣的:

RewriteRule ^play/([^/.]+)$ index.php?task=view&name=$1 [L] 

Shahaf的答案也可以幫助你(雖然這意味着文件系統獲取每一個請求,從而影響性能輪詢兩次),但這個上面你說的「只有比洞賽/與任何東西,但點或正斜槓它後面」,這似乎是你的意思。如果沒有美元可以有後任何東西,仍然匹配,因爲你已經找到。

我也刪除這是沒有必要的字符類點的轉義。

+0

這項工作!非常感謝你! –

1

重寫規則之前,您應該添加條件,如果它不是一個文件或目錄

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d