[英]mod_rewrite in .htaccess, go/*, go?, go?/* work, but go/?* doesn't
我嘗試瀏覽了網站上的一些mod_rewrite問題,但沒有找到我的問題的答案(大多數問題標題為“ mod_rewrite無效”的事實並沒有使該任務變得更容易,希望我標題會有所幫助)。
這是我的/somepath/.htaccess的內容:
RewriteEngine On
RewriteRule ^go/(.*) /cgi-bin/goto.cgi?$1
# ^^^ WORKS: /somepath/go/200001..
RewriteRule ^go?(.*) /cgi-bin/goto.cgi$1
# ^^^ WORKS: /somepath/go?200001..
ErrorDocument 404 /cgi-bin/goto.cgi?error404
在測試中,我使goto.cgi簡單地返回了$ ENV {QUERY_STRING},$ ENV {QUERY_STRING_UNESCAPED}和$ ENV {PATH_INFO}。 目前,上述規則意味着我在URL時正確傳遞了QUERY_STRING:
/somepath/go/200001
/somepath/go?200001
/somepath/go?/200001
被訪問,但不訪問
/somepath/go/?200001
將被訪問,在這種情況下,$ ENV {QUERY_STRING},$ ENV {QUERY_STRING_UNESCAPED}和$ ENV {PATH_INFO}為空。
所以問題是,我可以使用什么規則
/somepath/go/?200001
給我的腳本200001甚至是/ 200001部分?
第一條規則是銷毀失敗示例的查詢字符串,因為$1
將為空,並且替換中的空查詢字符串將刪除所有現有查詢字符串。
第二個規則是胡言亂語。
RewriteRule ^go/(.+)$ /cgi-bin/goto.cgi?$1
RewriteRule ^go/?$ /cgi-bin/goto.cgi
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.