[英]Apache mod_rewrite preserving query string and adding anchor
我想創建一個重定向此的 mod_rewrite 規則: www.domain.com/original/
對此附加錨點: www.domain.com/new/#something-else
它還應該保留原始 URL 中指定的任何查詢字符串(如果存在)。 例如: www.domain.com/original/?key=example
?key=example
應該重定向到: www.domain.com/new/?key=example#something-else
?key=example#something-else
我嘗試使用帶有 NE 和 QSA 標志的以下 mod_rewrite 規則,即使它保留了錨點和查詢字符串,它們也以錯誤的順序重寫:查詢字符串在錨點之后而不是之前。
RewriteRule ^original https://%{HTTP_HOST}/new/$1#something-else [QSA,NE,R=301,L]
如何將原始查詢字符串(如果存在)和 append 保留到最后?
謝謝
如何將原始查詢字符串(如果存在)和 append 保留到最后?
除非您在重定向中修改查詢字符串,否則不需要標志QSA
,因此可以在此處省略。
無需在您的規則中使用https://%{HTTP_HOST}
因為源域和重定向域相同。
$1
將是空的,因為您沒有在模式中捕獲任何文本。
您可以使用此重定向規則:
# when query string is non-empty
RewriteCond %{QUERY_STRING} .
RewriteRule ^original/?$ /new/?%{QUERY_STRING}#something-else [NC,NE,R=302,L]
# when query string is empty
RewriteRule ^original/?$ /new/#something-else [NC,NE,R=302,L]
驗證它工作正常后,將R=302
替換為R=301
(永久重定向)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.