簡體   English   中英

Apache mod_rewrite 保留查詢字符串並添加錨點

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM