我在运行Red Hat的Linux机器上安装了Apache 2.4。
我的问题很简单:指令<Directory>... </Directory>等同于<Directory /> ...</Directory>来configuration文档根目录吗?
谢谢。 编辑:这我的httpd.conf,我删除了所有的评论:
ServerRoot "/test/ApacheFolder" Listen 80 LoadModule authn_file_module modules/mod_authn_file.so LoadModule authn_core_module modules/mod_authn_core.so LoadModule authz_host_module modules/mod_authz_host.so LoadModule authz_groupfile_module modules/mod_authz_groupfile.so LoadModule authz_user_module modules/mod_authz_user.so LoadModule authz_core_module modules/mod_authz_core.so LoadModule access_compat_module modules/mod_access_compat.so LoadModule auth_basic_module modules/mod_auth_basic.so LoadModule socache_shmcb_module modules/mod_socache_shmcb.so LoadModule reqtimeout_module modules/mod_reqtimeout.so LoadModule filter_module modules/mod_filter.so LoadModule mime_module modules/mod_mime.so LoadModule log_config_module modules/mod_log_config.so LoadModule env_module modules/mod_env.so LoadModule headers_module modules/mod_headers.so LoadModule setenvif_module modules/mod_setenvif.so LoadModule version_module modules/mod_version.so LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_connect_module modules/mod_proxy_connect.so LoadModule proxy_ftp_module modules/mod_proxy_ftp.so LoadModule proxy_http_module modules/mod_proxy_http.so LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so LoadModule proxy_scgi_module modules/mod_proxy_scgi.so LoadModule proxy_wstunnel_module modules/mod_proxy_wstunnel.so LoadModule proxy_ajp_module modules/mod_proxy_ajp.so LoadModule proxy_balancer_module modules/mod_proxy_balancer.so LoadModule proxy_express_module modules/mod_proxy_express.so LoadModule slotmem_shm_module modules/mod_slotmem_shm.so LoadModule ssl_module modules/mod_ssl.so LoadModule lbmethod_byrequests_module modules/mod_lbmethod_byrequests.so LoadModule lbmethod_bytraffic_module modules/mod_lbmethod_bytraffic.so LoadModule lbmethod_bybusyness_module modules/mod_lbmethod_bybusyness.so LoadModule lbmethod_heartbeat_module modules/mod_lbmethod_heartbeat.so LoadModule unixd_module modules/mod_unixd.so LoadModule status_module modules/mod_status.so LoadModule autoindex_module modules/mod_autoindex.so LoadModule dir_module modules/mod_dir.so LoadModule alias_module modules/mod_alias.so LoadModule rewrite_module modules/mod_rewrite.so <IfModule unixd_module> User daemon Group daemon </IfModule> ServerAdmin [email protected] <Directory /> AllowOverride none Require all denied </Directory> DocumentRoot "/test/ApacheFolder/htdocs" <Directory "/test/ApacheFolder/htdocs"> Options FollowSymLinks AllowOverride None Require all granted </Directory> <IfModule dir_module> DirectoryIndex index.html </IfModule> <Files ".ht*"> Require all denied </Files> ErrorLog "logs/error_log" LogLevel warn <IfModule log_config_module> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common <IfModule logio_module> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio </IfModule> CustomLog "logs/access_log" common </IfModule> <IfModule alias_module> ScriptAlias /cgi-bin/ "/test/ApacheFolder/cgi-bin/" </IfModule> <IfModule cgid_module> </IfModule> <Directory "/test/ApacheFolder/cgi-bin"> AllowOverride None Options None Require all granted </Directory> <IfModule mime_module> TypesConfig conf/mime.types AddType application/x-compress .Z AddType application/x-gzip .gz .tgz </IfModule> ErrorDocument 400 "/test/error.html" <IfModule proxy_html_module> Include conf/extra/proxy-html.conf </IfModule> Include conf/extra/httpd-ssl.conf <IfModule ssl_module> SSLRandomSeed startup builtin SSLRandomSeed connect builtin </IfModule> ServerName localhost ProxyRequests Off RewriteEngine On TraceEnable off RewriteCond %{REQUEST_METHOD} ^(TRACE|DELETE|TRACK|MOVE|PUT|OPTIONS) RewriteRule .* - [F] RewriteCond %{HTTPS} !on RewriteRule ^/(.*)$ https://%{SERVER_NAME}%{REQUEST_URI} SSLInsecureRenegotiation off ServerTokens Prod ServerSignature Off <IfModule mod_security.c> SecFilterEngine On SecFilterCheckURLEncoding On SecFilterCheckUnicodeEncoding Off SecFilterForceByteRange 0 255 SecAuditEngine RelevantOnly SecAuditLog logs/audit_log SecFilterDebugLog logs/modsec_debug_log SecFilterDebugLevel 0 SecFilterScanPOST On SecFilterDefaultAction "deny,log,status:500" SecServerSignature "Microsoft-IIS/5.0" </IfModule> <IfModule mod_headers.c> Header unset Server Header unset X-Powered-By </IfModule>
Directory标签用作容器来指定一个或多个命令/configuration指令,这些指令适用于指定path的特定文件系统path。 你指定的两个例子是非等价的。
文档根目录是用DocumentRoot指令指定的。
在这种情况下,文档根目录指定为: DocumentRoot "/test/ApacheFolder/htdocs" ,是DocumentRoot "/test/ApacheFolder/htdocs"的文件系统path
以下是适用于它的<Directory> ... </Directory>部分:
<Directory "/test/ApacheFolder/htdocs"> Options FollowSymLinks AllowOverride None Require all granted </Directory>
这部分:
<Directory /> AllowOverride none Require all denied </Directory>
适用于/的文件系统path。
这样做是为了使所有位置都被默认拒绝,除非特别启用,如上面的/test/ApacheFolder/htdocs 。 关于这方面的更多细节在这里 。