簡體   English   中英

.htaccess中的mod_rewrite,go / *,go ?, go?/ *工作,但是go /?*不

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

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