1

現在、3つのケースを除いてスクリプトへの直接アクセスを制限するために、次のものがあります。

RewriteEngine on
RewriteCond %{REQUEST_URI} !read_dir [NC]
RewriteCond %{REQUEST_URI} !get_ac_options [NC]
RewriteCond %{REQUEST_URI} !view_log [NC]
RewriteRule ^inc/php /cms_spider3?script_access_attempt [NC]

最初の 2 つの条件は機能します (つまり、read_dir.php と get_ac_options.php の両方にアクセスできます)が、3 番目のルールは無視されます。

つまり、アクセスする

/my/server/view_log.php

...常にリダイレクトされます。view_log.php と他の 2 つの唯一の違いは、他の 2 つが常に AJAX 経由でアクセスされるのに対し、view_log.php はブラウザーで直接アクセスされることです。これが違いを引き起こすとは想像できませんが、言及したいと思いました。

私は mod-rewrite の専門家ではないので、私が持っているもの全体をより適切に作成できる可能性があります。(何が機能するのかさえわかりません[NC]。いくつかのサンプルコードから取っただけです。)

4

1 に答える 1

1

it's possible the entirety of what I have could be better written.

ルールは次のように書き直すことができます。

RewriteEngine on

RewriteCond %{REQUEST_URI} !(read_dir|get_ac_options|view_log) [NC]
RewriteRule ^inc/php /cms_spider3?script_access_attempt [L,NC]

NC はNo Case(大文字と小文字の一致を無視) L は Last rule を表します

参考:Apache mod_rewrite の紹介

于 2013-11-11T11:52:47.630 に答える