我正在將舊網站移動到新網站的/ archive子目錄中。該網站是所有的HTML有很多完全合格的URL,當它不在檔案文件夾(例如(http://domain.com/pictures/home.html
)。這很好,因爲我已將任何未發現的文件重寫到/ archive目錄。htaccess使用散列(#)重寫文件名稱文件名
問題是...很多這些完全合格的URL在文件名中有#,例如http://domain.com/pictures/category#001.html
,然後鏈接爲http://domain.com/pictures/category%23001.html
。當重寫被應用到這些URL時,服務器沒有找到該文件給出404錯誤,路徑被截斷在%23(例如'/ archive/pictures/category was not found on this server。')
我試過使用[B]標誌,它仍然給出了404錯誤,但文件路徑給出確實存在(例如'/archive/pictures/category#001.html在此服務器上未找到。')。
如果我使用URL中的%23
(例如http://domain.com/archive/pictures/category%23001.html
)直接導航到存檔目錄中的文件,那麼一切正常。唯一的問題是通過重寫規則
規則添加/歸檔目錄時很簡單:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /archive/$1 [B,L,QSA]
我也試着更換與此規則:
RewriteRule (.*) /archive/%{REQUEST_URI} [B,L,QSA]
但有同樣的問題。
感謝您的閱讀!
使用'NE'標誌仍然不適合我。我能獲得文件的唯一方法就是重定向到它 – anotheruser1488182
你還試過:[NE,L,NC,B]'? – anubhava