[英]htaccess redirect starting URL expression to blog page
我想重定向某些以表達式開頭的 URL。 對於前
我想重定向:
www.abc.com/%2FE ( www.abc.com/%2FExxxxxxxx ) 到我的 .htaccess 文件中的博客頁面。
我可以重定向www.abc.com/2FExxxxx但無法定位 %。
xxxx...我在URL中使用的是表示%2FE之后的任何表達式。
這是我的代碼:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule %2FE /blog [R=301,L]
<IfModule>
這里有人可以幫助我嗎?
默認情況下,Apache 拒絕(服務器生成 404)任何在 URL 的 URL 路徑部分包含編碼斜杠 ( %2F
) 的 URL。這發生在請求被.htaccess
處理之前。 (這被認為是一項安全功能。)
要特別允許編碼斜杠,有AllowEncodedSlashes
指令(默認值為Off
)。 但這只能在服務器或虛擬主機上下文中設置。 不能在.htaccess
中設置。 要允許編碼斜杠,可以將AllowEncodedSlashes
設置為On
或NoDecode
(首選)。
例如:
# In a server / virtualhost context (not .htaccess)
AllowEncodedSlashes NoDecode
RewriteRule %2FE /blog [R=301,L]
通常, RewriteRule
模式與 % 解碼的 URL 路徑相匹配。 但是,如果設置了NoDecode
選項,則編碼的斜杠 ( %2F
) 不會被解碼。 所以上面的“應該”工作(除了模式沒有錨定,所以可能匹配太多)。
但請注意,在與RewriteRule
pattern匹配的 URL 路徑中,多個(解碼的)斜杠被減少了。 所以在這里匹配多個連續的斜杠是不可能的。
相反,我會根據原始請求匹配THE_REQUEST
服務器變量,並且始終保持 % 編碼(如果請求是這樣進行的)。 並保留多個斜杠。 請注意, THE_REQUEST
包含 HTTP 請求標頭的第一行,而不僅僅是 URL 路徑。
例如:
RewriteEngine On
RewriteCond %{THE_REQUEST} \s/%2FE [NC]
RewriteRule . /blog [R=301,L]
您不應在此處使用<IfModule>
包裝器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.