0

これが私の現在の状況です:

/api を api.php に書き換えています。

RewriteRule ^apidir/url/new?$ api.php [QSA,NC,L]

現在、IP をホワイトリストに登録しています。しかし、Filesディレクティブを使用してアクセスをブロックしようとすると、書き換えられているためできません。

<Files "\api.php">
order allow,deny
allow from all
deny from 24.11.95.151
</Files>

で、書き換えたディレクトリをブロックするだけで使ってみた

<Files "\apimashape2013/url/new">
order allow,deny
allow from all
deny from 24.11.95.151
</Files>

これらのどれもうまくいきませんでした。

4

2 に答える 2

1

にアクセスvirtualhostできる場合は、これを使用できます。

RewriteEngine on
RewriteMap hosts-deny txt:/home/youraccount/deny_list.txt
RewriteCond ${hosts-deny:%{REMOTE_ADDR}|NOT-FOUND} !=NOT-FOUND [OR]
RewriteCond ${hosts-deny:%{REMOTE_HOST}|NOT-FOUND} !=NOT-FOUND
RewriteCond %{REQUEST_URI} ^/api [NC]
RewriteRule ^ - [F]

そして、deny_list.txtブラックリストに登録したいIPまたはHOSTのリストを持っています:

193.102.180.41 -
bsdti1.sdm.de -
192.76.162.40 -

詳しくはこちらをご覧ください。


または、 にアクセスできない場合はvirtualhost、php ファイルの名前をたとえば一意の名前に変更してthisismyapi.php次のように使用できます。

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

<Files "thisismyapi.php">
order allow,deny
allow from all
deny from 24.11.95.151
</Files>

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !thisismyapi.php
RewriteRule ^api/?(.*)$ /api/thisismyapi.php [L]

なぜ別の名前に変更するのですか?

この方法ではどこにでも一致するため、ニーズに合わせて適切に機能し、他のファイルと競合することはありません。

たとえば、この方法では、ファイルの名前が index.php である場合、他のフォルダーの index.php と競合します。

于 2013-09-05T02:33:51.137 に答える
0

<Files>最初のコンテナが機能しない理由がわかりません。効果は\ないはずです。ただし、コンテナーは、ファイルがあるディレクトリまたは親ディレクトリにある必要がありapi.phpます。

または、これを htaccess に含めることもできます。

RewriteCond %{REMOTE_ADDR} ^24\.11\.95\.151$
RewriteRule ^/?api.php$ - [L,F]
于 2013-09-05T02:11:15.080 に答える