我有一個像這樣的 URL 結構 -
https://example.com/檔案夾/子檔案夾/files.html
我在子檔案夾中有很多檔案。我想從 URL 中洗掉“子檔案夾”。
我嘗試了一些 StackOverflow 解決方案。但沒有成功。
另外請告訴我在哪里粘貼 .htaccess 代碼。在位于“檔案夾”或“子檔案夾”中的 .htaccess 檔案中。
編輯
檔案夾/htaccess
RewriteEngine On
RewriteCond {REQUEST_FILENAME} !-f
RewriteCond {REQUEST_FILENAME} !-d
RewriteRule ^(. )/?$ /folder/subfolder/$1 [L]
子檔案夾/htaccesss
RewriteEngine On
RewriteRule (. ) /folder/$1 [L,R]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.] )\.html [NC]
RewriteRule ^ %1 [R,L,NC]
RewriteCond %{REQUEST_FILENAME}.html-f
RewriteRule ^ %{REQUEST_URI}.html[L]
uj5u.com熱心網友回復:
您可以在您的 中使用以下規則/folder/. htaccess:
RewriteEngine On
RewriteCond {DOCUMENT_ROOT}/$1 -f [OR]
RewriteCond {DOCUMENT_ROOT}/$1 -d
RewriteRule ^(. )/?$ /folder/subfolder/$1 [L]
如果上述規則不起作用,請改用以下規則
RewriteEngine On
RewriteCond %{REQUEST_URI} !/folder/subfolder/
RewriteRule ^(. )/?$ /folder/subfolder/$1 [L]
請記住將規則放在 htaccess 的頂部或其他指令之前,并將其放在/folder目錄中的 htaccess 中。
編輯 :
如果您還想將舊 URL 重定向到新 URL,例如/folder/subfolder/file.htmlto /folder/file.html,請將以下規則放在 htaccess 中folder/subfolder
RewriteEngine On
RewriteRule (. ) /folder/$1 [L,R]
請記住,將上面的代碼htaccess的在你subfolder,當你確信該規則的作業,改變R以R=301使重定向永久,因為它避免了在搜索引擎的重復內容的問題。
編輯 :
如果上述解決方案對您不起作用,正如您在評論中所說,您404在重定向時會出錯。出現錯誤是因為請求的檔案被重寫為不存在的path/folder/file.html . You can solve this by removing your/folder/subfolder/。htaccess file and only use one single htaccess in/folder/` 包含以下內容:
RewriteEngine On
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^subfolder/(. )/?$ /folder/$1 [L,R]
RewriteCond %{REQUEST_URI} !/folder/subfolder/
RewriteRule ^(. )/?$ /folder/subfolder/$1 [L]
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/400169.html
標籤:阿帕奇 .htaccess 重定向 改写 http-重定向
上一篇:如何從URL中洗掉引數
