nginx ディレクトリ権限制御ヘルプ
<br />
server {<br />
listen 80;<br />
server_name admin.my.com;<br />
<br />
location / {<br />
root D:/www/webroot;<br />
index index.php;<br />
}<br />
<br />
error_page 404 = http://admin.my.com/error.html;<br />
<br />
location ~ \.php$ {<br />
root D:/www/webroot;<br />
fastcgi_pass 127.0.0.1:9000;<br />
fastcgi_index index.php;<br />
fastcgi_param SCRIPT_FILENAME D:/www/webroot$fastcgi_script_name;<br />
include fastcgi_params;<br />
}<br />
}<br />
ログイン後にコピー
fastcgi.conf は上記のように設定されています
私のシステムの URL 構造 (疑似静的ではなく、エントリ ファイル内で変換されただけです):
など:
http://admin.my.com/index.php/Index/image
_code
http://admin.my.com/index.php/Admin/edit_config
http://admin.my.com/index.php/News/add
……
Index.php はエントリ ファイル、単一エントリ
しかし、問題は http://admin.my.com/index.php/Index/image_code
にアクセスしたときに発生します。
実際、ファイル パスは D:/www/webroot/index.php/Index/image_code/index.php
を指しています。
上記の場所は次のように構成されているため、おそらく URL のサフィックスは php や html、またはその他の「物理的に存在する」ファイルではないため、index.php が自動的に追加されますよね。 ? ? ? ? ? ? ? ? ? ? ?
私の目的は、index.php によって形成される URL の後にスラッシュがいくつ続いても、次のパラメータをディレクトリとして認識して自動的に Index.php を追加するのではなく、エントリ ファイルは以前の Index.php のみにすることです。
この URL 構造が非常に不規則であることはわかっていますが、現時点では変更に非常に手間と時間がかかるため、nginx の設定を通じて解決する方法があるかどうか疑問に思っています。お願いです、神様、お願いします、ありがとう。
Apacheの方が使いやすい気がするので、あっという間に終わりました:
<br />
<VirtualHost *:80><br />
ServerAdmin admin@yahoo.com.cn<br />
DocumentRoot /<br />
ServerName admin.my.com<br />
Alias / "D:/www/webroot/"<br />
<Directory "D:/www/webroot/"><br />
Options FollowSymLinks MultiViews ExecCGI<br />
<br />
Order allow,deny<br />
Allow from all <br />
</Directory><br />
ErrorLog logs/admin-error.log<br />
#CustomLog logs/admin-access.log common<br />
</VirtualHost><br />
ログイン後にコピー
nginx
アパッチ
サーバー
-----解決策---------location ~ .php$
php を削除した後、正規表現内の $ は終わりを意味します。これを削除すると、nginx は .php だけでなく、すべての .php* ファイルを処理のために fpm に渡すように指示されます。
次に、実行ファイル名をindex.php
に変更します。
fastcgi_param SCRIPT_FILENAME D:/www/webroot/index.php;
残りはあなたのアプリケーション次第です。
これは比較的単純な構成です。より完全な方法を知りたい場合は、この点に関する説明が多すぎます。