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