2

この PHP コードを .htaccess ルールに書き直すには?

$url = "$_SERVER[HTTP_HOST]";
if(strrpos($url, "m.cloudcms.co") === false){
    header("HTTP/1.0 403 Forbidden");
    echo '<h1>Forbidden Access</h1>';
    echo '<p>You have reached this page in error.</p>';
    exit;
}

これが私の.htaccessです:

deny from all
allow from m.cloudcms.co
# caching static files
<IfModule mod_headers.c>
    <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|bmp|js|css|swf|woff|svg|ttf|otf|eot)(\.gz)?$">
        Header unset Pragma
        Header unset ETag
        Header set Cache-Control "max-age=-1, no-store, no-cache, must-revalidate"
    </FilesMatch>
</IfModule>
FileETag None
<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresDefault M-1
  ExpiresByType text/html M-1
  ExpiresByType image/gif M-1
  ExpiresByType image/jpeg M-1
  ExpiresByType image/png M-1
  ExpiresByType text/css M-1
  ExpiresByType text/javascript M-1
  ExpiresByType application/javascript M-1
  ExpiresByType application/x-javascript M-1
  ExpiresByType text/xml M-1
  ExpiresByType image/svg+xml M-1
  ExpiresByType application/x-font-ttf M-1
  ExpiresByType application/x-font-truetype M-1
  ExpiresByType application/x-font-opentype M-1
  ExpiresByType application/vnd.ms-fontobject M-1
  ExpiresByType application/x-font-woff M-1  
</IfModule>


# For servers that support output compression, you should pick up a bit of
# speed by un-commenting the following lines.

php_flag zlib.output_compression On
php_value zlib.output_compression_level 9

これは現在、cloudcms.co と m.cloudcms.co の両方に対して 403 Forbidden メッセージを実行しています。

4

1 に答える 1

2

照合する URI を決定する必要があります。次に、ドキュメント ルート (または適切な場所) でルールを使用して、同じ種類のチェックを行うことができます。

"$_SERVER[HTTP_HOST]"本質的に%{HTTP_HOST}変数です。F403 を返すには、ルールでフラグを使用するだけです。

RewriteCond %{HTTP_HOST} !^m.cloudcms.co$ [NC]
RewriteRule ^(.*)$ - [L,F]

ここで、一致する URI は(.*)、またはすべてです。より具体的なものに絞り込みたい場合は、一致するように正規表現を変更する必要があります。

の場合/file.php:

RewriteRule ^file\.php$ - [L,F]

ディレクトリ内のすべての場合/some/path/:

RewriteRule ^some/path/ - [L,F]

于 2013-05-06T20:31:33.893 に答える