簡體   English   中英

htaccess 重定向起始 URL 表達式到博客頁面

[英]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設置為OnNoDecode (首選)。

例如:

# 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.

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