我有一個關于 mod_rewrite 的問題,我似乎無法解決它。我將示例簡化為最基本的內容,但我不明白為什么特定規則會強制我的瀏覽器重定向而不是重寫:
RewriteEngine on
#if request is for a physical-file OR for one of the language paths - skip (return as-is)
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{REQUEST_URI} ^/de [OR]
RewriteCond %{REQUEST_URI} ^/en-US
RewriteRule ^ - [L]
#otherwise: rewrite to en-US folder
RewriteRule ^(.*)$ /en-US/$1 [NC,L,QSA]
我非常仔細地閱讀了檔案,看起來這實際上應該重寫每個呼叫,所以https://example.com/fuBar.html實際上應該從我的服務器中檢索檔案/en-US/fuBar.html- 用戶瀏覽器不應該知道它。
真正發生的是,由于某種原因,瀏覽器被重定向到https://example.com/en-US/fuBar.html. 雖然這確實顯示了正確的內容,但這不是我想要的或我認為RewriteRule應該做的。我究竟做錯了什么?
*add - 子檔案夾 de ??和 en-US 的 .htaccess:
RewriteEngine On
# If an existing asset or directory is requested go to it as it is
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -f [OR]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_URI} -d
RewriteRule ^ - [L]
# If the requested resource doesn't exist, use index.html
RewriteRule ^ /index.html
uj5u.com熱心網友回復:
您發布的代碼中沒有任何內容會觸發外部“重定向”。
確保您已清除瀏覽器(和任何中間)快取,以確保您沒有看到更早/錯誤的 301(永久)重定向。(301 重定向被瀏覽器永久快取。)
檢查瀏覽器開發者工具中的“網路流量”以查看此重定向的確切性質,了解它從/到的重定向,以及重定向的 3xx HTTP 狀態代碼(如果這確實是外部重定向)。
前端(JavaScript/Angular)似乎正在操縱地址欄中的 URL(沒有重定向)。來自評論:
實際上根本沒有發生重定向!而是因為我
<base href="/en-US">以某種方式設定了我的前端(Angular)似乎比我聰明,在我沒有意識到的情況下操縱地址。原來我什至不需要改變基本的href,我只需要重寫。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/425156.html
上一篇:.htaccess根據條件重寫為index.php或index.html
下一篇:我想用.htaccess將https://blog/home/post?read=example重寫為https://blog/home/example
