簡體   English   中英

拒絕直接訪問除具有get參數的一個PRETTY URL以外的所有文件

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

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