本文介绍了`Apache` `localhost/~username/` 不工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

更新:以下答案也适用于 El Capitan.

刚入门的人,下面提到的文件在/etc/apache2下

对于下面的回答,同样需要修改的文件是/etc/apache2/extra/httpd-userdir.conf

原件:

所以我最近刚刚升级到 Mac OS X Yosemite,我需要再次设置我的 Apache.我在/user/kevin 下创建了一个文件夹Sites"并将文件权限更改为 777 并像以前一样取消注释 /etc/apache2/httpd.conf 中的 php5module 行.

localhost 正在工作,但 localhost/~kevin/ 给了我一个在此服务器上找不到请求的 URL/~kevin/."

这是我的 httpd.conf 文件,以防有人需要查看它.如果有什么问题,我将不胜感激,如果有人可以发布他们的 httpd.conf 文件,以便我可以恢复它并再次执行.

## 这是主要的 Apache HTTP 服务器配置文件.它包含# 向服务器提供指令的配置指令.# 见<URL:http://httpd.apache.org/docs/2.4/>了解详细信息.# 具体见# <URL:http://httpd.apache.org/docs/2.4/mod/directives.html># 讨论每个配置指令.## 不要在没有理解的情况下简单地阅读这里的说明# 他们做什么.它们在这里只是作为提示或提醒.如果你不确定# 查阅在线文档.你被警告了.## 配置和日志文件名:如果您为许多指定的文件名# 服务器的控制文件以/"(或 Win32 的驱动器:/")开头,# 服务器将使用该显式路径.如果文件名不*不*开始# 使用/",ServerRoot 的值在前面——所以logs/access_log"# 将 ServerRoot 设置为 "/usr/local/apache2" 将被解释# 服务器为/usr/local/apache2/logs/access_log",而/logs/access_log"# 将被解释为/logs/access_log".## ServerRoot:服务器所在目录树的顶部# 配置、错误和日志文件被保留.## 不要在目录路径的末尾添加斜杠.如果你点#ServerRoot在非本地磁盘,一定要指定本地磁盘# 互斥指令,如果使用基于文件的互斥.如果你想分享# 多个 httpd 守护进程使用相同的 ServerRoot,您需要在# 最少的 PidFile.#服务器根目录/usr"## Mutex:允许你设置互斥机制和互斥文件目录# 对于单个互斥锁,或更改全局默认值## 如果互斥锁是基于文件的和默认的,则取消注释并更改目录# mutex 文件目录不在本地磁盘上或不适合某些# 其他原因.## 互斥锁默认:/private/var/run## Listen:允许您将 Apache 绑定到特定的 IP 地址和/或# 端口,而不是默认端口.另请参阅 <VirtualHost># 指令.## 将其更改为侦听特定 IP 地址,如下所示# 防止 Apache 进入所有绑定的 IP 地址.##听 12.34.56.78:80听 80## 动态共享对象 (DSO) 支持## 为了能够使用作为 DSO 构建的模块的功能,您# 必须在这个位置放置相应的LoadModule"行,以便# 包含在其中的指令实际上是可用的_before_它们被使用.# 静态编译的模块(那些由 `httpd -l' 列出的)不需要# 在这里加载.## 例子:# LoadModule foo_module modules/mod_foo.so#LoadModule authn_file_module libexec/apache2/mod_authn_file.so#LoadModule authn_dbm_module libexec/apache2/mod_authn_dbm.so#LoadModule authn_anon_module libexec/apache2/mod_authn_anon.so#LoadModule authn_dbd_module libexec/apache2/mod_authn_dbd.so#LoadModule authn_socache_module libexec/apache2/mod_authn_socache.soLoadModule authn_core_module libexec/apache2/mod_authn_core.soLoadModule authz_host_module libexec/apache2/mod_authz_host.soLoadModule authz_groupfile_module libexec/apache2/mod_authz_groupfile.soLoadModule authz_user_module libexec/apache2/mod_authz_user.so#LoadModule authz_dbm_module libexec/apache2/mod_authz_dbm.so#LoadModule authz_owner_module libexec/apache2/mod_authz_owner.so#LoadModule authz_dbd_module libexec/apache2/mod_authz_dbd.soLoadModule authz_core_module libexec/apache2/mod_authz_core.so#LoadModule authnz_ldap_module libexec/apache2/mod_authnz_ldap.soLoadModule access_compat_module libexec/apache2/mod_access_compat.soLoadModule auth_basic_module libexec/apache2/mod_auth_basic.so#LoadModule auth_form_module libexec/apache2/mod_auth_form.so#LoadModule auth_digest_module libexec/apache2/mod_auth_digest.so#LoadModule allowmethods_module libexec/apache2/mod_allowmethods.so#LoadModule file_cache_module libexec/apache2/mod_file_cache.so#LoadModule cache_module libexec/apache2/mod_cache.so#LoadModule cache_disk_module libexec/apache2/mod_cache_disk.so#LoadModule cache_socache_module libexec/apache2/mod_cache_socache.so#LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so#LoadModule socache_dbm_module libexec/apache2/mod_socache_dbm.so#LoadModule socache_memcache_module libexec/apache2/mod_socache_memcache.so#LoadModule watchdog_module libexec/apache2/mod_watchdog.so#LoadModule 宏模块 libexec/apache2/mod_macro.so#LoadModule dbd_module libexec/apache2/mod_dbd.so#LoadModule dumpio_module libexec/apache2/mod_dumpio.so#LoadModule echo_module libexec/apache2/mod_echo.so#LoadModule buffer_module libexec/apache2/mod_buffer.so#LoadModule data_module libexec/apache2/mod_data.so#LoadModule ratelimit_module libexec/apache2/mod_ratelimit.soLoadModule reqtimeout_module libexec/apache2/mod_reqtimeout.so#LoadModule ext_filter_module libexec/apache2/mod_ext_filter.so#LoadModule request_module libexec/apache2/mod_request.so#LoadModule include_module libexec/apache2/mod_include.soLoadModule filter_module libexec/apache2/mod_filter.so#LoadModule reflector_module libexec/apache2/mod_reflector.so#LoadModule Substitute_module libexec/apache2/mod_substitute.so#LoadModule sed_module libexec/apache2/mod_sed.so#LoadModule charset_lite_module libexec/apache2/mod_charset_lite.so#LoadModule deflate_module libexec/apache2/mod_deflate.so#LoadModule xml2enc_module libexec/apache2/mod_xml2enc.so#LoadModule proxy_html_module libexec/apache2/mod_proxy_html.soLoadModule mime_module libexec/apache2/mod_mime.so#LoadModule ldap_module libexec/apache2/mod_ldap.soLoadModule log_config_module libexec/apache2/mod_log_config.so#LoadModule log_debug_module libexec/apache2/mod_log_debug.so#LoadModule log_forensic_module libexec/apache2/mod_log_forensic.so#LoadModule logio_module libexec/apache2/mod_logio.soLoadModule env_module libexec/apache2/mod_env.so#LoadModule mime_magic_module libexec/apache2/mod_mime_magic.so#LoadModule expires_module libexec/apache2/mod_expires.soLoadModule headers_module libexec/apache2/mod_headers.so#LoadModule usertrack_module libexec/apache2/mod_usertrack.so#LoadModule unique_id_module libexec/apache2/mod_unique_id.soLoadModule setenvif_module libexec/apache2/mod_setenvif.soLoadModule version_module libexec/apache2/mod_version.so#LoadModule remoteip_module libexec/apache2/mod_remoteip.soLoadModule proxy_module libexec/apache2/mod_proxy.soLoadModule proxy_connect_module libexec/apache2/mod_proxy_connect.soLoadModule proxy_ftp_module libexec/apache2/mod_proxy_ftp.soLoadModule proxy_http_module libexec/apache2/mod_proxy_http.soLoadModule proxy_fcgi_module libexec/apache2/mod_proxy_fcgi.soLoadModule proxy_scgi_module libexec/apache2/mod_proxy_scgi.so#LoadModule proxy_fdpass_module libexec/apache2/mod_proxy_fdpass.soLoadModule proxy_wstunnel_module libexec/apache2/mod_proxy_wstunnel.soLoadModule proxy_ajp_module libexec/apache2/mod_proxy_ajp.soLoadModule proxy_balancer_module libexec/apache2/mod_proxy_balancer.soLoadModule proxy_express_module libexec/apache2/mod_proxy_express.so#LoadModule session_module libexec/apache2/mod_session.so#LoadModule session_cookie_module libexec/apache2/mod_session_cookie.so#LoadModule session_dbd_module libexec/apache2/mod_session_dbd.soLoadModule slotmem_shm_module libexec/apache2/mod_slotmem_shm.so#LoadModule slotmem_plain_module libexec/apache2/mod_slotmem_plain.so#LoadModule ssl_module libexec/apache2/mod_ssl.so#LoadModule dialup_module libexec/apache2/mod_dialup.soLoadModule lbmethod_byrequests_module libexec/apache2/mod_lbmethod_byrequests.soLoadModule lbmethod_bytraffic_module libexec/apache2/mod_lbmethod_bytraffic.soLoadModule lbmethod_bybusyness_module libexec/apache2/mod_lbmethod_bybusyness.so#LoadModule lbmethod_heartbeat_module libexec/apache2/mod_lbmethod_heartbeat.soLoadModule unixd_module libexec/apache2/mod_unixd.so#LoadModule heartbeat_module libexec/apache2/mod_heartbeat.so#LoadModule heartmonitor_module libexec/apache2/mod_heartmonitor.so#LoadModule dav_module libexec/apache2/mod_dav.soLoadModule status_module libexec/apache2/mod_status.soLoadModule autoindex_module libexec/apache2/mod_autoindex.so#LoadModule asis_module libexec/apache2/mod_asis.so#LoadModule info_module libexec/apache2/mod_info.so#LoadModule cgi_module libexec/apache2/mod_cgi.so#LoadModule dav_fs_module libexec/apache2/mod_dav_fs.so#LoadModule dav_lock_module libexec/apache2/mod_dav_lock.so#LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.soLoadModule协商_module libexec/apache2/mod_negotiation.soLoadModule dir_module libexec/apache2/mod_dir.so#LoadModule imagemap_module libexec/apache2/mod_imagemap.so#LoadModule actions_module libexec/apache2/mod_actions.so#LoadModule speling_module libexec/apache2/mod_speling.so#LoadModule userdir_module libexec/apache2/mod_userdir.soLoadModule alias_module libexec/apache2/mod_alias.so#LoadModule rewrite_module libexec/apache2/mod_rewrite.soLoadModule php5_module libexec/apache2/libphp5.so#LoadModule hfs_apple_module libexec/apache2/mod_hfs_apple.so<IfModule unixd_module>## 如果你希望 httpd 以不同的用户或组运行,你必须运行# httpd 最初以 root 身份,它将切换.## 用户/组:运行 httpd 的用户/组的名称(或 #number).# 创建一个专门的用户和组通常是一个好习惯# 运行 httpd,与大多数系统服务一样.#用户_www群_www</IfModule>#'主'服务器配置## 本节中的指令设置main"使用的值# 服务器,它响应任何未被处理的请求# <虚拟主机>定义.这些值还提供了默认值# 任何 <VirtualHost>您可以稍后在文件中定义的容器.## 所有这些指令都可能出现在 <VirtualHost> 中.容器,# 在这种情况下,这些默认设置将被覆盖# 正在定义的虚拟主机.### ServerAdmin:你的地址,应该是服务器出现问题的地方# 电子邮件.这个地址出现在一些服务器生成的页面上,例如# 作为错误文件.例如[email protected]#ServerAdmin [email protected]## ServerName 给出了服务器用来标识自己的名称和端口.# 这通常可以自动确定,但我们建议您指定# 它明确地防止在启动过程中出现问题.## 如果您的主机没有注册的 DNS 名称,请在此处输入其 IP 地址.##ServerName www.example.com:80## 拒绝访问整个服务器的文件系统.你必须# 明确允许访问其他网站的内容目录# 下面的块.#<目录/>允许覆盖无要求全部拒绝</目录>## 请注意,从现在开始,您必须特别允许# 要启用的特定功能 - 所以如果某些东西不能正常工作# 您可能会想到,请确保您已专门启用它# 以下.### DocumentRoot:您将在其中提供服务的目录# 文件.默认情况下,所有请求都来自此目录,但# 符号链接和别名可用于指向其他位置.#DocumentRoot "/Library/WebServer/Documents"<目录/Library/WebServer/Documents">## Options 指令的可能值为 "None", "All",# 或以下任意组合:# 索引包括 FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews## 注意MultiViews"必须被命名为*explicitly* ---Options All"# 不给你.## Options 指令既复杂又重要.请参见# http://httpd.apache.org/docs/2.4/mod/core.html#options# 想要查询更多的信息.#选项 FollowSymLinks 多视图多视图匹配任何## AllowOverride 控制可以在 .htaccess 文件中放置哪些指令.# 它可以是All"、None"或关键字的任意组合:# AllowOverride FileInfo AuthConfig 限制#允许覆盖无## 控制谁可以从这个服务器获取东西.#要求所有授予</目录>## DirectoryIndex:设置 Apache 将在目录中提供的文件# 被请求.#<IfModule dir_module>目录索引 index.html</IfModule>## 以下几行防止 .htaccess 和 .htpasswd 文件被# 由 Web 客户端查看.#<FilesMatch "^\.([Hh][Tt]|[Dd][Ss]_[Ss])">要求全部拒绝</FilesMatch>## Apple 特定的文件系统保护.#<文件rsrc">要求全部拒绝</文件><DirectoryMatch ".*\.\.namedfork">要求全部拒绝</DirectoryMatch>## ErrorLog:错误日志文件的位置.# 如果您没有在 <VirtualHost> 中指定 ErrorLog 指令;# 容器,与该虚拟主机相关的错误消息将是# 在这里登录.如果你 *do* 为 <VirtualHost> 定义一个错误日志文件;# 容器,该主机的错误将记录在那里而不是这里.#ErrorLog "/private/var/log/apache2/error_log"## LogLevel:控制记录到 error_log 的消息数量.# 可能的值包括:调试、信息、通知、警告、错误、暴击、# 警报,紧急.#日志级别警告<IfModule log_config_module>## 以下指令定义了一些格式昵称以供使用# 一个 CustomLog 指令(见下文).#LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" 合并LogFormat "%h %l %u %t \"%r\" %>s %b" common<IfModule logio_module># 您需要启用 mod_logio.c 才能使用 %I 和 %OLogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combineio</IfModule>##访问日志文件的位置和格式(Common Logfile Format).# 如果你没有在 <VirtualHost> 中定义任何访问日志文件;# 容器,它们将被记录在这里.相反,如果你*做*# 定义 per-访问日志文件,事务将# 记录在其中并且*不*在此文件中.#CustomLog "/private/var/log/apache2/access_log" 通用## 如果您更喜欢带有访问、代理和引用信息的日志文件#(组合日志文件格式)您可以使用以下指令.##CustomLog "/private/var/log/apache2/access_log" 合并</IfModule><IfModule alias_module>## 重定向:允许您告诉客户有关过去使用的文档# 存在于您服务器的命名空间中,但不再存在.客户端# 将在其新位置对文档发出新请求.# 例子:# 重定向永久/foo http://www.example.com/bar## 别名:将 Web 路径映射到文件系统路径并用于# 访问不在 DocumentRoot 下的内容.# 例子:# 别名/webpath/full/filesystem/path## 如果您在/webpath 上包含尾随/那么服务器将# 要求它出现在 URL 中.你也很可能# 需要提供一个<目录>部分允许访问# 文件系统路径.## ScriptAlias:这控制哪些目录包含服务器脚本.# ScriptAliases 本质上与 Aliases 相同,除了# 目标目录中的文档被视为应用程序和# 在请求时由服务器运行,而不是作为发送到服务器的文件# 客户.关于尾随/"的相同规则适用于 ScriptAlias# 关于别名的指令.#ScriptAliasMatch ^/cgi-bin/((?!(?i:webobjects)).*$) "/Library/WebServer/CGI-Executables/$1"</IfModule><IfModule cgid_module>## ScriptSock:在线程服务器上,指定 UNIX 的路径# 用于与 mod_cgid 的 CGI 守护进程通信的套接字.##Scriptsock cgisock</IfModule>## "/Library/WebServer/CGI-Executables" 应该改成你的 ScriptAliased# CGI 目录存在,如果你有那个配置.#<目录/Library/WebServer/CGI-Executables">允许覆盖无选项 无要求所有授予</目录><IfModule mime_module>## TypesConfig 指向包含映射列表的文件# 文件扩展名到 MIME 类型.#TypesConfig/private/etc/apache2/mime.types## AddType 允许您添加或覆盖 MIME 配置# 在 TypesConfig 中为特定文件类型指定的文件.##AddType 应用程序/x-gzip .tgz## AddEncoding 允许你让某些浏览器解压# 即时信息.注意:并非所有浏览器都支持此功能.##AddEncoding x-compress .Z#AddEncoding x-gzip .gz .tgz## 如果上面的 AddEncoding 指令被注释掉,那么你# 可能应该定义这些扩展来指示媒体类型:#AddType 应用程序/x-compress .Z添加类型应用程序/x-gzip .gz .tgz## AddHandler 允许您将某些文件扩展名映射到处理程序":# 与文件类型无关的操作.这些可以内置到服务器中# 或添加 Action 指令(见下文)## 要在 ScriptAliased 目录之外使用 CGI 脚本:#(您还需要将ExecCGI"添加到Options"指令中.)##AddHandler cgi-script .cgi# 对于类型映射(协商资源):#AddHandler 类型映射变量## 过滤器允许您在将内容发送到客户端之前对其进行处理.## 解析 .shtml 文件以获取服务器端包含 (SSI):#(您还需要将Includes"添加到Options"指令中.)##AddType 文本/html .shtml#AddOutputFilter 包括 .shtml</IfModule>## mod_mime_magic 模块允许服务器使用来自# 文件本身的内容来确定其类型.MIMEmagic 文件# 指令告诉模块提示定义所在的位置.##MIMEMagicFile/private/etc/apache2/magic## 可定制的错误响应分为三种:# 1) 纯文本 2) 本地重定向 3) 外部重定向## 一些例子:#ErrorDocument 500 服务器发出了嘘声."#ErrorDocument 404/missing.html#ErrorDocument 404 "/cgi-bin/missing_handler.pl"#ErrorDocument 402 http://www.example.com/subscription_info.html### MaxRanges:之前请求中的最大范围数# 返回整个资源,或特殊资源之一# 值 'default'、'none' 或 'unlimited'.# 默认设置是接受 200 个范围.#MaxRanges 无限## EnableMMAP 和 EnableSendfile:在支持它的系统上,# 内存映射或发送文件系统调用可用于交付# 文件.这通常会提高服务器性能,但必须# 从网络安装服务时关闭# 文件系统或者是否支持这些功能# 在您的系统上损坏.# 默认值:EnableMMAP On,EnableSendfile Off##EnableMMAP 关闭#启用发送文件跟踪启用关闭# 补充配置##/private/etc/apache2/extra/目录下的配置文件可以# 包括添加额外功能或修改默认配置# 服务器,或者您可以简单地将它们的内容复制到这里并更改为# 必要的.# 服务器池管理(特定于 MPM)包括/private/etc/apache2/extra/httpd-mpm.conf# 多语言错误信息#包括/private/etc/apache2/extra/httpd-multilang-errordoc.conf# 花式目录列表包括/private/etc/apache2/extra/httpd-autoindex.conf# 语言设定#包括/private/etc/apache2/extra/httpd-languages.conf# 用户家目录#包括/private/etc/apache2/extra/httpd-userdir.conf# 请求和配置的实时信息#包括/private/etc/apache2/extra/httpd-info.conf# 虚拟主机#包括/private/etc/apache2/extra/httpd-vhosts.conf# 本地访问Apache HTTP Server手册#包括/private/etc/apache2/extra/httpd-manual.conf# 分布式创作和版本控制 (WebDAV)#包括/private/etc/apache2/extra/httpd-dav.conf# 各种默认设置#包括/private/etc/apache2/extra/httpd-default.conf# 配置 mod_proxy_html 以理解 HTML4/XHTML1<IfModule proxy_html_module>包括/private/etc/apache2/extra/proxy-html.conf</IfModule># 安全 (SSL/TLS) 连接#包括/private/etc/apache2/extra/httpd-ssl.conf## 注意:必须存在以下内容才能支持# 在没有/dev/random 等价物的平台上开始没有 SSL# 但是一个静态编译的 mod_ssl.#<IfModule ssl_module>SSLRandomSeed 启动内置SSLRandomSeed 连接内置</IfModule>包括/private/etc/apache2/other/*.conf## 取消下面的注释以处理故意的用户代理# 滥用 DNT 违反开放标准(DNT *必须*是特定的# 最终用户选择)##<IfModule setenvif_module>#BrowserMatch "MSIE 10.0;"坏_DNT#</IfModule>#<IfModule headers_module>#RequestHeader 取消设置 DNT env=bad_DNT#</IfModule>

伙计,这很长......

解决方案

看来您需要取消对以下内容的注释:

#LoadModule userdir_module libexec/apache2/mod_userdir.so

#Include/private/etc/apache2/extra/httpd-userdir.conf

然后在 httpd-userdir.conf 中,您可能需要取消注释:

#Include/private/etc/apache2/users/*.conf

最后,如果/private/etc/apache2/users/kevin.conf 不存在,您需要创建它.我认为它应该是这样的:

选项索引多视图允许覆盖无要求所有授予</目录>

确保之后重新启动Apache服务器:

sudo apachectl restart

UPDATE: The following answer will also work for El Capitan.

For people who just start, the file mentioned below is under /etc/apache2

For the answer below, the file that also need to be changed is /etc/apache2/extra/httpd-userdir.conf

ORIGINAL:

So I just recently upgrade to Mac OS X Yosemite and I need to set up my Apache again. I create a folder "Sites" under /user/kevin and change file permission to 777 and uncomment the php5module line in /etc/apache2/httpd.conf just like before.

localhost is working but localhost/~kevin/ gives me an"The requested URL /~kevin/ was not found on this server."

Here's my httpd.conf file in case anyone needs to look at it. If there's something wrong with it I will be grateful if anyone can post their httpd.conf file so I can recover it and do it again.

#
# This is the main Apache HTTP server configuration file.  It contains the
# configuration directives that give the server its instructions.
# See <URL:http://httpd.apache.org/docs/2.4/> for detailed information.
# In particular, see
# <URL:http://httpd.apache.org/docs/2.4/mod/directives.html>
# for a discussion of each configuration directive.
#
# Do NOT simply read the instructions in here without understanding
# what they do.  They're here only as hints or reminders.  If you are unsure
# consult the online docs. You have been warned.
#
# Configuration and logfile names: If the filenames you specify for many
# of the server's control files begin with "/" (or "drive:/" for Win32), the
# server will use that explicit path.  If the filenames do *not* begin
# with "/", the value of ServerRoot is prepended -- so "logs/access_log"
# with ServerRoot set to "/usr/local/apache2" will be interpreted by the
# server as "/usr/local/apache2/logs/access_log", whereas "/logs/access_log"
# will be interpreted as '/logs/access_log'.

#
# ServerRoot: The top of the directory tree under which the server's
# configuration, error, and log files are kept.
#
# Do not add a slash at the end of the directory path.  If you point
# ServerRoot at a non-local disk, be sure to specify a local disk on the
# Mutex directive, if file-based mutexes are used.  If you wish to share the
# same ServerRoot for multiple httpd daemons, you will need to change at
# least PidFile.
#
ServerRoot "/usr"

#
# Mutex: Allows you to set the mutex mechanism and mutex file directory
# for individual mutexes, or change the global defaults
#
# Uncomment and change the directory if mutexes are file-based and the default
# mutex file directory is not on a local disk or is not appropriate for some
# other reason.
#
# Mutex default:/private/var/run

#
# Listen: Allows you to bind Apache to specific IP addresses and/or
# ports, instead of the default. See also the <VirtualHost>
# directive.
#
# Change this to Listen on specific IP addresses as shown below to
# prevent Apache from glomming onto all bound IP addresses.
#
#Listen 12.34.56.78:80
Listen 80

#
# Dynamic Shared Object (DSO) Support
#
# To be able to use the functionality of a module which was built as a DSO you
# have to place corresponding `LoadModule' lines at this location so the
# directives contained in it are actually available _before_ they are used.
# Statically compiled modules (those listed by `httpd -l') do not need
# to be loaded here.
#
# Example:
# LoadModule foo_module modules/mod_foo.so
#
LoadModule authn_file_module libexec/apache2/mod_authn_file.so
#LoadModule authn_dbm_module libexec/apache2/mod_authn_dbm.so
#LoadModule authn_anon_module libexec/apache2/mod_authn_anon.so
#LoadModule authn_dbd_module libexec/apache2/mod_authn_dbd.so
#LoadModule authn_socache_module libexec/apache2/mod_authn_socache.so
LoadModule authn_core_module libexec/apache2/mod_authn_core.so
LoadModule authz_host_module libexec/apache2/mod_authz_host.so
LoadModule authz_groupfile_module libexec/apache2/mod_authz_groupfile.so
LoadModule authz_user_module libexec/apache2/mod_authz_user.so
#LoadModule authz_dbm_module libexec/apache2/mod_authz_dbm.so
#LoadModule authz_owner_module libexec/apache2/mod_authz_owner.so
#LoadModule authz_dbd_module libexec/apache2/mod_authz_dbd.so
LoadModule authz_core_module libexec/apache2/mod_authz_core.so
#LoadModule authnz_ldap_module libexec/apache2/mod_authnz_ldap.so
LoadModule access_compat_module libexec/apache2/mod_access_compat.so
LoadModule auth_basic_module libexec/apache2/mod_auth_basic.so
#LoadModule auth_form_module libexec/apache2/mod_auth_form.so
#LoadModule auth_digest_module libexec/apache2/mod_auth_digest.so
#LoadModule allowmethods_module libexec/apache2/mod_allowmethods.so
#LoadModule file_cache_module libexec/apache2/mod_file_cache.so
#LoadModule cache_module libexec/apache2/mod_cache.so
#LoadModule cache_disk_module libexec/apache2/mod_cache_disk.so
#LoadModule cache_socache_module libexec/apache2/mod_cache_socache.so
#LoadModule socache_shmcb_module libexec/apache2/mod_socache_shmcb.so
#LoadModule socache_dbm_module libexec/apache2/mod_socache_dbm.so
#LoadModule socache_memcache_module libexec/apache2/mod_socache_memcache.so
#LoadModule watchdog_module libexec/apache2/mod_watchdog.so
#LoadModule macro_module libexec/apache2/mod_macro.so
#LoadModule dbd_module libexec/apache2/mod_dbd.so
#LoadModule dumpio_module libexec/apache2/mod_dumpio.so
#LoadModule echo_module libexec/apache2/mod_echo.so
#LoadModule buffer_module libexec/apache2/mod_buffer.so
#LoadModule data_module libexec/apache2/mod_data.so
#LoadModule ratelimit_module libexec/apache2/mod_ratelimit.so
LoadModule reqtimeout_module libexec/apache2/mod_reqtimeout.so
#LoadModule ext_filter_module libexec/apache2/mod_ext_filter.so
#LoadModule request_module libexec/apache2/mod_request.so
#LoadModule include_module libexec/apache2/mod_include.so
LoadModule filter_module libexec/apache2/mod_filter.so
#LoadModule reflector_module libexec/apache2/mod_reflector.so
#LoadModule substitute_module libexec/apache2/mod_substitute.so
#LoadModule sed_module libexec/apache2/mod_sed.so
#LoadModule charset_lite_module libexec/apache2/mod_charset_lite.so
#LoadModule deflate_module libexec/apache2/mod_deflate.so
#LoadModule xml2enc_module libexec/apache2/mod_xml2enc.so
#LoadModule proxy_html_module libexec/apache2/mod_proxy_html.so
LoadModule mime_module libexec/apache2/mod_mime.so
#LoadModule ldap_module libexec/apache2/mod_ldap.so
LoadModule log_config_module libexec/apache2/mod_log_config.so
#LoadModule log_debug_module libexec/apache2/mod_log_debug.so
#LoadModule log_forensic_module libexec/apache2/mod_log_forensic.so
#LoadModule logio_module libexec/apache2/mod_logio.so
LoadModule env_module libexec/apache2/mod_env.so
#LoadModule mime_magic_module libexec/apache2/mod_mime_magic.so
#LoadModule expires_module libexec/apache2/mod_expires.so
LoadModule headers_module libexec/apache2/mod_headers.so
#LoadModule usertrack_module libexec/apache2/mod_usertrack.so
#LoadModule unique_id_module libexec/apache2/mod_unique_id.so
LoadModule setenvif_module libexec/apache2/mod_setenvif.so
LoadModule version_module libexec/apache2/mod_version.so
#LoadModule remoteip_module libexec/apache2/mod_remoteip.so
LoadModule proxy_module libexec/apache2/mod_proxy.so
LoadModule proxy_connect_module libexec/apache2/mod_proxy_connect.so
LoadModule proxy_ftp_module libexec/apache2/mod_proxy_ftp.so
LoadModule proxy_http_module libexec/apache2/mod_proxy_http.so
LoadModule proxy_fcgi_module libexec/apache2/mod_proxy_fcgi.so
LoadModule proxy_scgi_module libexec/apache2/mod_proxy_scgi.so
#LoadModule proxy_fdpass_module libexec/apache2/mod_proxy_fdpass.so
LoadModule proxy_wstunnel_module libexec/apache2/mod_proxy_wstunnel.so
LoadModule proxy_ajp_module libexec/apache2/mod_proxy_ajp.so
LoadModule proxy_balancer_module libexec/apache2/mod_proxy_balancer.so
LoadModule proxy_express_module libexec/apache2/mod_proxy_express.so
#LoadModule session_module libexec/apache2/mod_session.so
#LoadModule session_cookie_module libexec/apache2/mod_session_cookie.so
#LoadModule session_dbd_module libexec/apache2/mod_session_dbd.so
LoadModule slotmem_shm_module libexec/apache2/mod_slotmem_shm.so
#LoadModule slotmem_plain_module libexec/apache2/mod_slotmem_plain.so
#LoadModule ssl_module libexec/apache2/mod_ssl.so
#LoadModule dialup_module libexec/apache2/mod_dialup.so
LoadModule lbmethod_byrequests_module libexec/apache2/mod_lbmethod_byrequests.so
LoadModule lbmethod_bytraffic_module libexec/apache2/mod_lbmethod_bytraffic.so
LoadModule lbmethod_bybusyness_module libexec/apache2/mod_lbmethod_bybusyness.so
#LoadModule lbmethod_heartbeat_module libexec/apache2/mod_lbmethod_heartbeat.so
LoadModule unixd_module libexec/apache2/mod_unixd.so
#LoadModule heartbeat_module libexec/apache2/mod_heartbeat.so
#LoadModule heartmonitor_module libexec/apache2/mod_heartmonitor.so
#LoadModule dav_module libexec/apache2/mod_dav.so
LoadModule status_module libexec/apache2/mod_status.so
LoadModule autoindex_module libexec/apache2/mod_autoindex.so
#LoadModule asis_module libexec/apache2/mod_asis.so
#LoadModule info_module libexec/apache2/mod_info.so
#LoadModule cgi_module libexec/apache2/mod_cgi.so
#LoadModule dav_fs_module libexec/apache2/mod_dav_fs.so
#LoadModule dav_lock_module libexec/apache2/mod_dav_lock.so
#LoadModule vhost_alias_module libexec/apache2/mod_vhost_alias.so
LoadModule negotiation_module libexec/apache2/mod_negotiation.so
LoadModule dir_module libexec/apache2/mod_dir.so
#LoadModule imagemap_module libexec/apache2/mod_imagemap.so
#LoadModule actions_module libexec/apache2/mod_actions.so
#LoadModule speling_module libexec/apache2/mod_speling.so
#LoadModule userdir_module libexec/apache2/mod_userdir.so
LoadModule alias_module libexec/apache2/mod_alias.so
#LoadModule rewrite_module libexec/apache2/mod_rewrite.so
LoadModule php5_module libexec/apache2/libphp5.so
#LoadModule hfs_apple_module libexec/apache2/mod_hfs_apple.so

<IfModule unixd_module>
#
# If you wish httpd to run as a different user or group, you must run
# httpd as root initially and it will switch.
#
# User/Group: The name (or #number) of the user/group to run httpd as.
# It is usually good practice to create a dedicated user and group for
# running httpd, as with most system services.
#
User _www
Group _www

</IfModule>

# 'Main' server configuration
#
# The directives in this section set up the values used by the 'main'
# server, which responds to any requests that aren't handled by a
# <VirtualHost> definition.  These values also provide defaults for
# any <VirtualHost> containers you may define later in the file.
#
# All of these directives may appear inside <VirtualHost> containers,
# in which case these default settings will be overridden for the
# virtual host being defined.
#

#
# ServerAdmin: Your address, where problems with the server should be
# e-mailed.  This address appears on some server-generated pages, such
# as error documents.  e.g. [email protected]
#
ServerAdmin [email protected]

#
# ServerName gives the name and port that the server uses to identify itself.
# This can often be determined automatically, but we recommend you specify
# it explicitly to prevent problems during startup.
#
# If your host doesn't have a registered DNS name, enter its IP address here.
#
#ServerName www.example.com:80

#
# Deny access to the entirety of your server's filesystem. You must
# explicitly permit access to web content directories in other
# <Directory> blocks below.
#
<Directory />
    AllowOverride none
    Require all denied
</Directory>

#
# Note that from this point forward you must specifically allow
# particular features to be enabled - so if something's not working as
# you might expect, make sure that you have specifically enabled it
# below.
#

#
# DocumentRoot: The directory out of which you will serve your
# documents. By default, all requests are taken from this directory, but
# symbolic links and aliases may be used to point to other locations.
#
DocumentRoot "/Library/WebServer/Documents"
<Directory "/Library/WebServer/Documents">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #   Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options FollowSymLinks Multiviews
    MultiviewsMatch Any

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #   AllowOverride FileInfo AuthConfig Limit
    #
    AllowOverride None

    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>

#
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>

#
# The following lines prevent .htaccess and .htpasswd files from being
# viewed by Web clients.
#
<FilesMatch "^\.([Hh][Tt]|[Dd][Ss]_[Ss])">
    Require all denied
</FilesMatch>

#
# Apple specific filesystem protection.
#
<Files "rsrc">
    Require all denied
</Files>
<DirectoryMatch ".*\.\.namedfork">
    Require all denied
</DirectoryMatch>

#
# ErrorLog: The location of the error log file.
# If you do not specify an ErrorLog directive within a <VirtualHost>
# container, error messages relating to that virtual host will be
# logged here.  If you *do* define an error logfile for a <VirtualHost>
# container, that host's errors will be logged there and not here.
#
ErrorLog "/private/var/log/apache2/error_log"

#
# LogLevel: Control the number of messages logged to the error_log.
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
#
LogLevel warn

<IfModule log_config_module>
    #
    # The following directives define some format nicknames for use with
    # a CustomLog directive (see below).
    #
    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>
      # You need to enable mod_logio.c to use %I and %O
      LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
    </IfModule>

    #
    # The location and format of the access logfile (Common Logfile Format).
    # If you do not define any access logfiles within a <VirtualHost>
    # container, they will be logged here.  Contrariwise, if you *do*
    # define per-<VirtualHost> access logfiles, transactions will be
    # logged therein and *not* in this file.
    #
CustomLog "/private/var/log/apache2/access_log" common

    #
    # If you prefer a logfile with access, agent, and referer information
    # (Combined Logfile Format) you can use the following directive.
    #
    #CustomLog "/private/var/log/apache2/access_log" combined
</IfModule>

<IfModule alias_module>
    #
    # Redirect: Allows you to tell clients about documents that used to
    # exist in your server's namespace, but do not anymore. The client
    # will make a new request for the document at its new location.
    # Example:
    # Redirect permanent /foo http://www.example.com/bar

    #
    # Alias: Maps web paths into filesystem paths and is used to
    # access content that does not live under the DocumentRoot.
    # Example:
    # Alias /webpath /full/filesystem/path
    #
    # If you include a trailing / on /webpath then the server will
    # require it to be present in the URL.  You will also likely
    # need to provide a <Directory> section to allow access to
    # the filesystem path.

    #
    # ScriptAlias: This controls which directories contain server scripts.
    # ScriptAliases are essentially the same as Aliases, except that
    # documents in the target directory are treated as applications and
    # run by the server when requested rather than as documents sent to the
    # client.  The same rules about trailing "/" apply to ScriptAlias
    # directives as to Alias.
    #
    ScriptAliasMatch ^/cgi-bin/((?!(?i:webobjects)).*$) "/Library/WebServer/CGI-Executables/$1"

</IfModule>

<IfModule cgid_module>
    #
    # ScriptSock: On threaded servers, designate the path to the UNIX
    # socket used to communicate with the CGI daemon of mod_cgid.
    #
    #Scriptsock cgisock
</IfModule>

#
# "/Library/WebServer/CGI-Executables" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/Library/WebServer/CGI-Executables">
    AllowOverride None
    Options None
    Require all granted
</Directory>

<IfModule mime_module>
    #
    # TypesConfig points to the file containing the list of mappings from
    # filename extension to MIME-type.
    #
    TypesConfig /private/etc/apache2/mime.types

    #
    # AddType allows you to add to or override the MIME configuration
    # file specified in TypesConfig for specific file types.
    #
    #AddType application/x-gzip .tgz
    #
    # AddEncoding allows you to have certain browsers uncompress
    # information on the fly. Note: Not all browsers support this.
    #
    #AddEncoding x-compress .Z
    #AddEncoding x-gzip .gz .tgz
    #
    # If the AddEncoding directives above are commented-out, then you
    # probably should define those extensions to indicate media types:
    #
    AddType application/x-compress .Z
    AddType application/x-gzip .gz .tgz

    #
    # AddHandler allows you to map certain file extensions to "handlers":
    # actions unrelated to filetype. These can be either built into the server
    # or added with the Action directive (see below)
    #
    # To use CGI scripts outside of ScriptAliased directories:
    # (You will also need to add "ExecCGI" to the "Options" directive.)
    #
    #AddHandler cgi-script .cgi

    # For type maps (negotiated resources):
    #AddHandler type-map var

    #
    # Filters allow you to process content before it is sent to the client.
    #
    # To parse .shtml files for server-side includes (SSI):
    # (You will also need to add "Includes" to the "Options" directive.)
    #
    #AddType text/html .shtml
    #AddOutputFilter INCLUDES .shtml
</IfModule>

#
# The mod_mime_magic module allows the server to use various hints from the
# contents of the file itself to determine its type.  The MIMEMagicFile
# directive tells the module where the hint definitions are located.
#
#MIMEMagicFile /private/etc/apache2/magic

#
# Customizable error responses come in three flavors:
# 1) plain text 2) local redirects 3) external redirects
#
# Some examples:
#ErrorDocument 500 "The server made a boo boo."
#ErrorDocument 404 /missing.html
#ErrorDocument 404 "/cgi-bin/missing_handler.pl"
#ErrorDocument 402 http://www.example.com/subscription_info.html
#

#
# MaxRanges: Maximum number of Ranges in a request before
# returning the entire resource, or one of the special
# values 'default', 'none' or 'unlimited'.
# Default setting is to accept 200 Ranges.
#MaxRanges unlimited

#
# EnableMMAP and EnableSendfile: On systems that support it,
# memory-mapping or the sendfile syscall may be used to deliver
# files.  This usually improves server performance, but must
# be turned off when serving from networked-mounted
# filesystems or if support for these functions is otherwise
# broken on your system.
# Defaults: EnableMMAP On, EnableSendfile Off
#
#EnableMMAP off
#EnableSendfile on

TraceEnable off

# Supplemental configuration
#
# The configuration files in the /private/etc/apache2/extra/ directory can be
# included to add extra features or to modify the default configuration of
# the server, or you may simply copy their contents here and change as
# necessary.

# Server-pool management (MPM specific)
Include /private/etc/apache2/extra/httpd-mpm.conf

# Multi-language error messages
#Include /private/etc/apache2/extra/httpd-multilang-errordoc.conf

# Fancy directory listings
Include /private/etc/apache2/extra/httpd-autoindex.conf

# Language settings
#Include /private/etc/apache2/extra/httpd-languages.conf

# User home directories
#Include /private/etc/apache2/extra/httpd-userdir.conf

# Real-time info on requests and configuration
#Include /private/etc/apache2/extra/httpd-info.conf

# Virtual hosts
#Include /private/etc/apache2/extra/httpd-vhosts.conf

# Local access to the Apache HTTP Server Manual
#Include /private/etc/apache2/extra/httpd-manual.conf

# Distributed authoring and versioning (WebDAV)
#Include /private/etc/apache2/extra/httpd-dav.conf

# Various default settings
#Include /private/etc/apache2/extra/httpd-default.conf

# Configure mod_proxy_html to understand HTML4/XHTML1
<IfModule proxy_html_module>
Include /private/etc/apache2/extra/proxy-html.conf
</IfModule>

# Secure (SSL/TLS) connections
#Include /private/etc/apache2/extra/httpd-ssl.conf
#
# Note: The following must must be present to support
#       starting without SSL on platforms with no /dev/random equivalent
#       but a statically compiled-in mod_ssl.
#
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

Include /private/etc/apache2/other/*.conf

#
# uncomment out the below to deal with user agents that deliberately
# violate open standards by misusing DNT (DNT *must* be a specific
# end-user choice)
#
#<IfModule setenvif_module>
#BrowserMatch "MSIE 10.0;" bad_DNT
#</IfModule>
#<IfModule headers_module>
#RequestHeader unset DNT env=bad_DNT
#</IfModule>

Man this is long....

解决方案

Looks like you need to uncomment the following:

#LoadModule userdir_module libexec/apache2/mod_userdir.so

and

#Include /private/etc/apache2/extra/httpd-userdir.conf

Then in httpd-userdir.conf you may need to uncomment:

#Include /private/etc/apache2/users/*.conf

Lastly you would need to create /private/etc/apache2/users/kevin.conf if it doesn't exist. I think it should look something like this:

<Directory "/Users/kevin/Sites/">
  Options Indexes MultiViews
  AllowOverride None
  Require all granted
</Directory>

Make sure to restart the Apache server afterwards with:

sudo apachectl restart

这篇关于`Apache` `localhost/~username/` 不工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

07-25 18:30