簡體   English   中英

Apache RewriteRule RegEx無法正常工作

[英]Apache RewriteRule RegEx not working as intended

我想重寫網址:

/Files/ANYFILENAMEHERE?token=ANYTOKENHERE

/do_download.php?file=ANYFILENAMEHERE&token=ANYTOKENHERE

為此,我在.htaccess使用以下規則:

RewriteEngine On
RewriteRule ^Files\/([^\?]+)\?token=([a-z0-9]+)$ do_download.php?file=$1&token=$2 [L]

但是,URL不會被重寫。 它只是返回404錯誤。 PCRE模式下的Regex101上 ,由於某種原因它匹配。

為什么會這樣,我該如何解決? 我在某個地方犯了一個愚蠢的錯誤嗎?

我的Apache版本是2.2.31 (Unix) btw。

您無法在重寫規則中匹配查詢字符串。

嘗試以下方法:

RewriteCond %{QUERY_STRING} token=([^&]+)(&|$)
RewriteRule ^Files/(.+) /do_download.php?file=$1&token=%1

在這里,重寫條件在查詢字符串中尋找令牌,而重寫規則處理文件名。

演示在這里: http : //htaccess.mwl.be?share=fa3b4b46-b0c9-5406-a25b-605ca687d8bd

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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