我正在尝试将 Apache 配置为允许 .htaccess 重写规则。我正在使用 XAMPP 在本地运行 Apache。但是,我不断收到 500 个错误。我已经在谷歌上搜索了几个小时并尝试了所有常见的解决方案,所以请阅读我的整个帖子,以免重复我已经尝试过的解决方案。
当我检查 apache 错误日志时,错误显示为:
“C:/xampp/htdocs/xampp/websites/demo2/.htaccess:此处不允许重写引擎”。
我能找到的几乎所有其他遇到此问题的人都通过以下方式解决了这个问题:
- 取消注释
LoadModule rewrite_module modules/mod_rewrite.so
httpd.conf 中的命令 - 更改
AllowOverride none
为AllowOverride All
然而,这些解决方案都没有为我工作。我仍然收到 500 错误。我的问题听起来与此线程http://forums.digitalpoint.com/showthread.php?t=1786841相同,但该问题从未解决。我认为错误可能是我的 .htaccess 文件的位置,但我不知道。非常感谢任何见解!
顺便说一句,这是我的 .htaccess 文件。这是一个 Wordpress 安装:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /xampp/websites/demo2/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /xampp/websites/demo2/index.php [L]
</IfModule>
# END WordPress
这是我的 httpd.conf 文件
# # 这是主要的 Apache HTTP 服务器配置文件。它包含 # 为服务器提供指令的配置指令。 # 查看详细信息。 # 具体见 # # 讨论每个配置指令。 # # 不要在没有理解的情况下简单地阅读这里的说明 # 他们做什么。它们在这里仅作为提示或提醒。如果您不确定 # 查阅在线文档。你被警告了。 # # 配置和日志文件名:如果您指定的文件名很多 # 服务器的控制文件以“/”(或 Win32 的“drive:/”)开头, # 服务器将使用该显式路径。如果文件名*不*开始 # 带有“/”,ServerRoot 的值是前置的——所以“logs/foo.log” # 将 ServerRoot 设置为 "/xampp/apache" 将由 # 服务器为“/xampp/apache/logs/foo.log”。 # # 注意:在指定文件名的地方,必须使用正斜杠 # 而不是反斜杠(例如,“c:/apache”而不是“c:\apache”)。 # 如果省略驱动器号,则httpd.exe所在的驱动器 # 将默认使用。建议您始终提供 # 绝对路径中的显式驱动器号以避免混淆。 # # ServerRoot:服务器所在目录树的顶部 # 保留配置、错误和日志文件。 # # 不要在目录路径的末尾添加斜杠。如果你指 #ServerRoot 在非本地磁盘,一定要指向 LockFile 指令 # 在本地磁盘上。如果您希望多个服务器共享同一个 ServerRoot # httpd 守护进程,您至少需要更改 LockFile 和 PidFile。 # ServerRoot "/xampp/apache" # # Listen:允许您将 Apache 绑定到特定的 IP 地址和/或 # 端口,而不是默认端口。另见 #指令。 # # 将其更改为侦听特定 IP 地址,如下所示 # 防止 Apache 使用所有绑定的 IP 地址。 # #听 0.0.0.0:80 #听 [::]:80 听 80 # 默认字符集 UTF8 # 添加默认字符集 utf-8 # # 动态共享对象 (DSO) 支持 # # 为了能够使用作为 DSO 构建的模块的功能,您 # 必须在此位置放置相应的 `LoadModule' 行,以便 # 其中包含的指令在使用之前_实际上是可用的。 # 静态编译的模块(那些由 `httpd -l' 列出的)不需要 # 在这里加载。 # # 例子: # LoadModule foo_module modules/mod_foo.so # LoadModule access_compat_module modules/mod_access_compat.so LoadModule actions_module modules/mod_actions.so LoadModule alias_module modules/mod_alias.so LoadModule allowmethods_module 模块/mod_allowmethods.so LoadModule asis_module 模块/mod_asis.so LoadModule auth_basic_module 模块/mod_auth_basic.so #LoadModule auth_digest_module 模块/mod_auth_digest.so #LoadModule authn_anon_module 模块/mod_authn_anon.so LoadModule authn_core_module 模块/mod_authn_core.so #LoadModule authn_dbd_module 模块/mod_authn_dbd.so #LoadModule authn_dbm_module 模块/mod_authn_dbm.so LoadModule authn_file_module 模块/mod_authn_file.so #LoadModule authn_socache_module 模块/mod_authn_socache.so #LoadModule authnz_ldap_module 模块/mod_authnz_ldap.so LoadModule authz_core_module 模块/mod_authz_core.so #LoadModule authz_dbd_module 模块/mod_authz_dbd.so #LoadModule authz_dbm_module 模块/mod_authz_dbm.so LoadModule authz_groupfile_module 模块/mod_authz_groupfile.so LoadModule authz_host_module 模块/mod_authz_host.so #LoadModule authz_owner_module 模块/mod_authz_owner.so LoadModule authz_user_module 模块/mod_authz_user.so LoadModule autoindex_module 模块/mod_autoindex.so #LoadModule bucketeer_module 模块/mod_bucketeer.so #LoadModule 缓存模块模块/mod_cache.so #LoadModule case_filter_module 模块/mod_case_filter.so #LoadModule case_filter_in_module 模块/mod_case_filter_in.so #LoadModule cern_meta_module 模块/mod_cern_meta.so LoadModule cgi_module 模块/mod_cgi.so #LoadModule charset_lite_module 模块/mod_charset_lite.so #LoadModule dav_module 模块/mod_dav.so #LoadModule dav_fs_module 模块/mod_dav_fs.so LoadModule dav_lock_module 模块/mod_dav_lock.so #LoadModule dbd_module 模块/mod_dbd.so #LoadModule deflate_module 模块/mod_deflate.so LoadModule dir_module 模块/mod_dir.so #LoadModule disk_cache_module modules/mod_disk_cache.so #LoadModule dumpio_module 模块/mod_dumpio.so #LoadModule echo_module 模块/mod_echo.so LoadModule env_module 模块/mod_env.so #LoadModule 示例模块模块/mod_example.so #LoadModule expires_module modules/mod_expires.so #LoadModule ext_filter_module 模块/mod_ext_filter.so #LoadModule fcgid_module modules/mod_fcgid.so # 在运行时没有工作 #LoadModule file_cache_module modules/mod_file_cache.so #LoadModule filter_module modules/mod_filter.so LoadModule headers_module modules/mod_headers.so #LoadModule ident_module 模块/mod_ident.so #LoadModule imagemap_module modules/mod_imagemap.so LoadModule include_module modules/mod_include.so LoadModule info_module modules/mod_info.so LoadModule isapi_module modules/mod_isapi.so #LoadModule ldap_module 模块/mod_ldap.so #LoadModule logio_module 模块/mod_logio.so LoadModule log_config_module 模块/mod_log_config.so #LoadModule log_forensic_module 模块/mod_log_forensic.so LoadModule cache_disk_module 模块/mod_cache_disk.so LoadModule mime_module 模块/mod_mime.so #LoadModule mime_magic_module 模块/mod_mime_magic.so LoadModule 协商模块模块/mod_negotiation.so LoadModule proxy_module modules/mod_proxy.so LoadModule proxy_ajp_module 模块/mod_proxy_ajp.so #LoadModule proxy_balancer_module 模块/mod_proxy_balancer.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 rewrite_module modules/mod_rewrite.so LoadModule setenvif_module 模块/mod_setenvif.so #LoadModule 拼写模块模块/mod_speling.so LoadModule ssl_module 模块/mod_ssl.so LoadModule status_module modules/mod_status.so #LoadModule 替代模块模块/mod_substitute.so #LoadModule unique_id_module modules/mod_unique_id.so #LoadModule userdir_module modules/mod_userdir.so #LoadModule usertrack_module modules/mod_usertrack.so #LoadModule version_module modules/mod_version.so #LoadModule vhost_alias_module 模块/mod_vhost_alias.so # # 如果你希望 httpd 作为不同的用户或组运行,你必须运行 # httpd 最初以 root 身份,它会切换。 # # 用户/组:运行 httpd 的用户/组的名称(或 #number)。 # 创建一个专门的用户和组通常是一个好习惯 # 运行 httpd,与大多数系统服务一样。 # 用户守护程序 组守护程序 #'主'服务器配置 # # 本节中的指令设置'main'使用的值 # 服务器,它响应任何未被 a 处理的请求 # 定义。这些值还为 # 你可以在文件后面定义的任何容器。 # # 所有这些指令都可能出现在容器中, # 在这种情况下,这些默认设置将被覆盖 # 虚拟主机被定义。 # # # ServerAdmin: 你的地址,应该是服务器的问题所在 # 已发送电子邮件。此地址出现在某些服务器生成的页面上,例如 # 作为错误文件。例如 admin@your-domain.com # ServerAdmin postmaster@localhost # # ServerName 给出服务器用来标识自己的名称和端口。 # 这通常可以自动确定,但我们建议您指定 # 它明确地防止启动过程中出现问题。 # # 如果您的主机没有注册的 DNS 名称,请在此处输入其 IP 地址。 # 服务器名称本地主机:80 # # DocumentRoot:您将在其中提供服务的目录 # 文件。默认情况下,所有请求都来自该目录,但是 # 符号链接和别名可用于指向其他位置。 # DocumentRoot "/xampp/htdocs" # # Apache 可以访问的每个目录都可以配置为 # 允许和/或禁用哪些服务和功能 # 目录(及其子目录)。 # # 首先,我们将“默认”配置为一组非常严格的 # 特征。 # 允许覆盖所有 要求所有授予 # XAMPP:我们禁用特定于操作系统的优化以进行监听 # 此处使用 http 协议的套接字。IE 64 位没有这个问题。 AcceptFilter http 无 # # 请注意,从现在开始,您必须明确允许 # 要启用的特定功能 - 所以如果某些东西不能正常工作 # 你可能会想到,确保你已经特别启用它 # 以下。 # # # 这应该更改为您将 DocumentRoot 设置为的任何值。 # # # Options 指令的可能值是“None”、“All”、 # 或以下任意组合: # 索引包括 FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # 注意“MultiViews”必须*明确地命名* ---“Options All” # 不给你。 # # Options 指令既复杂又重要。请参见 # http://httpd.apache.org/docs/2.2/mod/core.html#options # 了解更多信息。 # 选项索引 FollowSymLinks 包括 ExecCGI # # AllowOverride 控制哪些指令可以放在 .htaccess 文件中。 # 可以是“All”、“None”或关键字的任意组合: # 选项 FileInfo AuthConfig 限制 # 允许覆盖所有 # # 控制谁可以从这个服务器获取东西。 # 要求所有授予 # # DirectoryIndex:设置 Apache 将提供的文件,如果一个目录 # 被请求。 # DirectoryIndex index.php index.pl index.cgi index.asp index.shtml index.html index.htm \ default.php default.pl default.cgi default.asp default.shtml default.html default.htm \ home.php home.pl home.cgi home.asp home.shtml home.html home.htm # # 以下行阻止 .htaccess 和 .htpasswd 文件 # 由 Web 客户端查看。 # 要求全部拒绝 # # ErrorLog:错误日志文件的位置。 # 如果你没有在 a 中指定 ErrorLog 指令 # 容器,与该虚拟主机相关的错误消息将是 # 在这里登录。如果你 *do* 定义一个错误日志文件 # 容器,该主机的错误将记录在那里而不是这里。 # 错误日志“日志/error.log” #ScriptLog "日志/cgi.log" # # LogLevel:控制记录到error_log的消息数量。 # 可能的值包括:调试、信息、通知、警告、错误、暴击、 # 警报,出现。 # 日志级别警告 # # 以下指令定义了一些格式昵称以用于 # 一个 CustomLog 指令(见下文)。 # LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" 组合 LogFormat "%h %l %u %t \"%r\" %>s %b" 常见 # 你需要启用 mod_logio.c 才能使用 %I 和 %O LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combineio # # 访问日志文件的位置和格式(Common Logfile Format)。 # 如果你没有定义任何访问日志文件 # 容器,它们将被记录在这里。相反,如果你*做* # 定义每个访问日志文件,事务将是 # 记录在其中并且 *not* 在此文件中。 # #CustomLog "logs/access.log" common # # 如果您更喜欢包含访问、代理和引用者信息的日志文件 # (Combined Logfile Format) 你可以使用下面的指令。 # CustomLog "logs/access.log" 结合 # # Redirect: 允许你告诉客户关于过去的文档 # 存在于服务器的命名空间中,但不再存在。客户端 # 将在其新位置对文档发出新请求。 # 例子: # 重定向永久 /foo http://localhost/bar # # Alias: 将 web 路径映射到文件系统路径,用于 # 访问不在 DocumentRoot 下的内容。 # 例子: # 别名 /webpath /full/filesystem/path # # 如果您在 /webpath 上包含尾随 /,那么服务器将 # 要求它出现在 URL 中。你也可能 # 需要提供一个section来允许访问 # 文件系统路径。 # # ScriptAlias:这控制哪些目录包含服务器脚本。 # ScriptAliases 本质上与 Aliases 相同,不同之处在于 # 目标目录中的文档被视为应用程序和 # 在请求时由服务器运行,而不是作为文件发送到 # 客户。关于尾随“/”的相同规则适用于 ScriptAlias # 关于别名的指令。 # ScriptAlias /cgi-bin/ "/xampp/cgi-bin/" # # ScriptSock:在线程服务器上,指定 UNIX 的路径 # 用于与 mod_cgid 的 CGI 守护进程通信的套接字。 # #Scriptsock“日志/cgi.sock” # # "/xampp/cgi-bin" 应该更改为您的 ScriptAliased # CGI 目录存在,如果你有配置的话。 # 允许覆盖所有 选项 无 要求所有授予 # # TypesConfig 指向包含来自的映射列表的文件 # MIME 类型的文件扩展名。 # 类型配置“conf/mime.types” # # AddType 允许您添加或覆盖 MIME 配置 # 在 TypesConfig 中为特定文件类型指定的文件。 # #AddType 应用程序/x-gzip .tgz # # AddEncoding 允许你让某些浏览器解压 # 即时信息。注意:并非所有浏览器都支持此功能。 # #AddEncoding x-compress .Z #AddEncoding x-gzip .gz .tgz # # 如果上面的 AddEncoding 指令被注释掉,那么你 # 可能应该定义这些扩展来指示媒体类型: # AddType 应用程序/x-compress .Z AddType 应用程序/x-gzip .gz .tgz # # AddHandler 允许您将某些文件扩展名映射到“处理程序”: # 与文件类型无关的操作。这些可以内置到服务器中 # 或添加 Action 指令(见下文) # # 要在 ScriptAliased 目录之外使用 CGI 脚本: # (您还需要将“ExecCGI”添加到“Options”指令中。) # AddHandler cgi-script .cgi .pl .asp # 对于类型映射(协商资源): #AddHandler 类型映射变量 # # 过滤器允许您在将内容发送到客户端之前对其进行处理。 # # 解析服务器端包含的 .shtml 文件(SSI): # (您还需要在“选项”指令中添加“包含”。) # AddType 文本/html .shtml AddOutputFilter 包括 .shtml # # mod_mime_magic 模块允许服务器使用来自 # 文件本身的内容来确定它的类型。MIMEMagic 文件 # 指令告诉模块提示定义所在的位置。 # MIMEMagicFile "conf/magic" # # 可定制的错误响应有三种形式: # 1) 纯文本 2) 本地重定向 3) 外部重定向 # # 一些例子: #ErrorDocument 500 “服务器发出嘘声。” #ErrorDocument 404 /missing.html #ErrorDocument 404 "/cgi-bin/missing_handler.pl" #ErrorDocument 402 http://localhost/subscription_info.html # # # EnableMMAP 和 EnableSendfile:在支持它的系统上, # 内存映射或 sendfile 系统调用用于传递 # 个文件。这通常会提高服务器性能,但必须 # 从网络安装服务时关闭 # 文件系统或者是否支持这些功能 # 在您的系统上损坏。 # #EnableMMAP 关闭 #EnableSendfile 关闭 # 补充配置 # # conf/extra/目录下的配置文件可以 # 包括添加额外功能或修改默认配置 # 服务器,或者你可以简单地将它们的内容复制到这里并更改为 # 必要的。 # XAMPP 特定设置 包括“conf/extra/httpd-xampp.conf” # 服务器池管理(特定于 MPM) 包括“conf/extra/httpd-mpm.conf” # 多语言错误信息 包括“conf/extra/httpd-multilang-errordoc.conf” # 精美的目录列表 包括“conf/extra/httpd-autoindex.conf” # 语言设定 包括“conf/extra/httpd-languages.conf” # 用户主目录 包括“conf/extra/httpd-userdir.conf” # 请求和配置的实时信息 包括“conf/extra/httpd-info.conf” # 虚拟主机 包括“conf/extra/httpd-vhosts.conf” # 分布式创作和版本控制 (WebDAV) # 注意力!WEB_DAV 是一种安全风险,没有用于安全身份验证的新用户特定配置 # 包括“conf/extra/httpd-dav.conf” # 为 Apache 实现代理/网关。 包括“conf/extra/httpd-proxy.conf” # 各种默认设置 包括“conf/extra/httpd-default.conf” # 安全 (SSL/TLS) 连接 包括“conf/extra/httpd-ssl.conf” # # 注意:必须存在以下内容才能支持 # 在没有 /dev/random 等价物的平台上开始没有 SSL # 但是一个静态编译的 mod_ssl。 # SSLRandomSeed 启动内置 SSLRandomSeed 连接内置 # 配置 mod_proxy_html 以理解 HTML4/XHTML1 # #包括 etc/extra/proxy-html.conf # # AJP13 代理 包括“conf/extra/httpd-ajp.conf”