htaccess 不存在目錄中不存在檔案的問題

htaccess 不存在目錄中不存在檔案的問題

我正在使用以下.htaccess文件,該文件運行良好,但是,我還想將訪問根目錄和任何子目錄(無論子目錄是否存在)中不存在的文件的任何嘗試轉發回主域名。

我嘗試過FallbackResource,但這導致了 500 系列錯誤。

RewriteEngine On

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^https://xxxxxxxxx.xxxxx/.*$ [NC]
RewriteRule \.(gif|jpg|jpeg|bmp|zip|rar|mp3|flv|swf|png|css|pdf)$ -     [F]

# browser requests PHP
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.php
RewriteRule ^/?(.*)\.php$ /$1 [L,R=301]

# check to see if the request is for a PHP file:
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^/?(.*)$ /$1.php [L]

ErrorDocument 500 /redirect
ErrorDocument 500 /redirect
ErrorDocument 500 /redirect
ErrorDocument 404 /error
ErrorDocument 401 /redirect
ErrorDocument 403 /redirect

任何幫助將不勝感激。

答案1

FallbackResource結果是 URL內部重寫到另一個文件。然而,我以為外部重定向在這種情況下會更好嗎?另外,FallbackResource可能與您現有的 mod_rewrite 指令衝突。 (但是,查看您FallbackResource對就地的使用會很有用,因為可能是您的語法有問題?)

ErrorDocument在最後一個 mod_rewrite 指令之後(指令之前)嘗試如下操作:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ / [QSD,R=302,L]

上面說...如果請求未映射到文件且未映射到目錄,則重定向到文檔根(臨時 302)。需要QSD從請求中刪除任何查詢字串。

在旁邊:從 SEO(或用戶)的角度來看,如果這是一個問題,不建議這樣做。


ErrorDocument 500 /redirect
ErrorDocument 500 /redirect
ErrorDocument 500 /redirect
ErrorDocument 404 /error
ErrorDocument 401 /redirect
ErrorDocument 403 /redirect

(除了不必要地多次定義 500 錯誤文件......)文件指令中指定的ErrorDocument應該是根相對的檔案系統小路。例如。/redirect.php(但這實際上並不重定向是嗎? )大概你其實沒有一個名為/redirect(需要進一步重寫)的檔案。

相關內容