[英]Deny direct access to all files except one PRETTY URL with get parameters
我想拒絕直接訪問所有文件,除了一個文件: go.php
。
我已經閱讀了這個問題,但由於我也發送了GET參數,因此無法正常工作。
這意味着除了嘗試訪問www.domain.com/go.php?code=xyz123
時,所有文件都應被拒絕。
我的代碼現在:
Order Allow,Deny
deny from all
allow from [my IP here]
<FilesMatch "go.php">
Allow from all
</FilesMatch>
我該如何解決?
謝謝!
編輯1
我將代碼更新為:
<Files go.php>
Allow from all
</Files>
現在,它確實允許url為domain.com/go.php?code=123
。 事實是,在這種重寫條件下,我使用了漂亮的URL:
RewriteRule ^go/([a-z0-9]+)$ /go.php?code=$1
RewriteRule ^go/([a-z0-9]+)/$ /go.php?code=$1
因此,如果url為domain.com/go/123
,則上述文件代碼不起作用。 如何解決這個問題?
由於這只是一個特定的文件,因此您不需要FilesMatch
,而可以使用Files
來代替
<Files go.php>
...
</Files>
從/go/123
重寫到/go.php?code=123
是經典的/go.php?code=123
。 您捕獲查詢字符串的一部分並在替換中使用它
RewriteRule ^go/(.+)$ /go.php?code=$1 [L]
我沒想到<Files go>
或<FilesMatch go>
可以工作,因為嚴格意義上“ / go / 123”不是文件。
所以盡管我無知
<Files go>
Allow from all
</Files>
作品。
或者,您可以使用If
並檢查請求的URL路徑
<If "%{REQUEST_URI} =~ m,^/go/,">
Allow from all
</If>
問題解決了:
<FilesMatch "go|go.php">
Allow from all
</FilesMatch>
謝謝你們!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.