问题标签 [apache2.4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
9026 浏览

regex - Apache mod_alias RedirectMatch 除特定模式外的所有内容

好的旧正则表达式让我发疯。

我需要使用从 mod_alias 重定向(不能使用 mod_rewrite)将 Apache 2.4 中的所有流量从 HTTP 重定向到 HTTPS,“/bt/sub/[a_few_endings]”除外。

我在我认识的所有在线测试人员(例如http://regex101.com/)中测试了以下正则表达式,并且都确认正则表达式确实应该匹配除了我不希望它匹配的 URL 之外的所有内容:

据我所知,这应该匹配http://local.mysite.com中的所有内容并将其重定向到https://local.mysite.com以下四个除外:

尽管如此,Apache 还是会重定向所有内容,包括我不想重定向的上述 URL。

我在 SO 中发现了几个类似的问题,但大多数问题都是根据 mod_rewrite 来回答的,这不是我想要/需要的,人们说的那些对我不起作用。

这是我目前的虚拟主机配置:

请帮助并防止我发疯:)


更新:发生了一些奇怪的事情:显然,当可以找到请求的 URL/路径时,Apache 会忽略 RedirectMatch 中的表达式并重定向客户端,即使 RedirectMatch 告诉它不要这样做。

为了测试这一点,我在一个单独的虚拟机中从头开始创建了一个新的虚拟主机,该虚拟机新安装了 Ubuntu Trussty 64,加载了 Apache 2.4。这个新的虚拟主机只包含 ServerName、RedirectMatch 和 DocumentRoot 指令,如下所示:

我创建了该目录/home/vagrant/www/bt/sub/went_active以确保 Apache 至少可以访问两个可能的 URL 之一。尝试访问http://testing.com:8080时,我按预期被重定向。

然后奇怪的是:当访问http://testing.com:8080/bt/sub/went_active与我创建的目录匹配的 URL 时,我仍然被重定向,即使我不应该这样做,但是在访问时http://testing.com:8080/bt/sub/success,我没有被重定向,而是得到一个 403 Forbidden。

我可能对此失去理智,但似乎当 Apache 看到它可以服务请求并且它匹配 RedirectMatch 中应该阻止重定向的正则表达式时,它决定忽略正则表达式并无论如何都进行重定向。三个字母:WTF?!?!?!

0 投票
1 回答
601 浏览

php - 如何在 Apache 2.4 中重定向 /path/variables/ 以重写为 /index.php/path/variables/?

我最近将本地开发服务器从 Apache 2.2 升级到 Apache 2.4(通过 Mac OS X 10.10 Yosemite)。本地主机按预期解析,但以下虚拟主机设置不再起作用(返回Not Found - The requested URL /subdir was not found on this server.)。

您能帮我将以下从 Apache 2.2 升级到 Apache 2.4 吗?

目标是使用 PATH 变量将所有目录重定向到根目录。例如:重定向/abc/def//index.php/abc/def/. 单独的索引工作正常。但是/abc/or /abc/def/(或任何子目录(路径)不再起作用。

你能明白为什么这不能正确解决吗?

其他调试:

0 投票
2 回答
26022 浏览

macos - 更改 Yosemite Apache 2.4 的 localhost 目录

我已经干净安装了 Mac OSX Yosemite,但我无法像在旧 OSX 版本上那样配置 Apache 2.4。

这是我想要做的:将“localhost”目录设置为“/Users/username/Public/”。但是,我尝试的一切都不起作用,我总是得到“禁止,无法访问 /”,或者我得到默认的“它有效!” 页...

如何简单地重新启动我的本地主机?

谢谢

编辑(感谢克里斯特安德森的回答)

适用于 Mac OSX 10.10 优胜美地

我还发布了我必须做的更改以保持运行。

在“/etc/apache2/users/”中,我创建了一个以我的用户名命名的文件,例如“myUsername.conf”。

您可以通过在终端中输入“id”来获取您的用户名。您应该在“uid=501(myUsername)”的开头找到您的用户名。

在这个新的“myUsername.conf”文件中,复制过去:

不要原谅改变myUsername价值。

然后,在“/etc/apache2/httpd.conf”文件中,取消注释所有这两行:

第 236 行,将“DocumentRoot”的目录更改为您想要的任何目录。第 250 行,将“Options”设置为“Options”Options Indexes FollowSymLinks Multiviews。第 258 行,将“AllowOverride None”设置为“AllowOverride All”。第 263 行,将“Require all denied”设置为“Require all grant”

在终端中,通过键入“sudo apachectl restart”重新启动 apache。

它适用于 Mac OS X 10.10 Yosemite 全新安装。

0 投票
3 回答
48 浏览

php - 什么是适合我的网站的 .htaccess 重写器

我想我不明白 .htaccess 重写是如何工作的,所以我请求你的帮助。我需要将http://www.mywebsite.com/index.php?name=first更改为http://www.mywebsite.com/first。这可能吗?我当前的 .htaccess 文件的内容是:

显然它不起作用。.htaccess 文件的内容是什么?

0 投票
2 回答
154 浏览

php - 新的 mysqli() 调用在 cli 中有效,但通过 apache httpd 失败

摘要:new mysqli() 调用可从 CLI 工作,但不能通过 httpd。

场景:文件timetest.php

作为用户 apache cli 命令 'php timetest.php' 会导致从查询返回的预期数据列表。

仅返回静态数据和 httpd 错误日志中的错误说明:

配置:

Fedora 20 Apache httpd PHP 版本 => 5.5.17

通过 apache 与通过 cli 的 phpinfo 的差异:

0 投票
1 回答
5809 浏览

ssl - Wamp SSL :- 将 http 重定向到 https

我已经在端口 8090 上配置了 ssl。我的 httpd_conf 文件如下

httpd_ssl.conf 如下

当我打开https://xxxx:8090 时,它会给出我在 wamp/www 中放入的正确索引字段。但是如果我打开http://xxxx8090/它会出现以下错误

为什么即使我在 http-ssl.conf 文件中将虚拟主机设置为 8090,我也无法将 http 重定向到 htts。8090和80端口有冲突吗...

0 投票
1 回答
772 浏览

mod-perl - Yosemite Apache 2.4 中的 Mod_perl 2.0.9 不执行 .pl 脚本

我遵循了如何在 OS X Yosemite 上的 Apache 2.4 中安装 mod_perl 2.0.9 中清晰而出色的程序?并在我的 Yosemite Apache 2.4 中安装了 mod_perl 2.0.9。它编译和安装没有错误(编译过程中出现了一些警告)并且 mod_perl/2.0.9dev Perl/v5.18.2 显示在 /server-status 中,并使用 apachectl 命令列出加载的模块。

但是我的 /Library/WebServer/CGI-Executables 目录中的 perl 脚本在以前版本的 MacOS 和 Apache 中运行良好,但无法执行。相反,.pl 文件的源代码显示在浏览器中。我需要在 /etc/spache2/httpd.conf 中添加一些额外的指令或其他更改吗?我可以/应该采取哪些步骤来调试它?谢谢。

0 投票
0 回答
756 浏览

apache - AliasMatch 与正则表达式在 Apache 2.4 中不起作用

我曾经有如下 /CollabPortal14300 的别名,它工作正常

但是我们试图从 Alias 中删除数字并尝试使用 RegEx 代替。所以我切换到 AliasMatch 如下

切换 AliasMatch /CollabPortal\d{5}apache后无法访问资源D:/Dev/Projects/CollabPortal/CollabPortal/target/CollabPortal/

以下是访问日志

在错误日志中我看到

有人可以帮助我为什么 AliasMatch 不起作用?

0 投票
1 回答
200 浏览

apache - mod_rewrite 在 apache 2.4 上无法正常工作

我以前用过其他主机,一切正常,但现在我已将其更改为新主机。在新主机上安装了 apache 2.4。

我有以下规则:

当我尝试访问例如/manage/时,它会显示索引页面,但如果我将一些额外的数据添加到路径中,它将显示我需要的内容。例如:/manage/some_data - 可以正常工作。但我想通过/manage/访问正确的目录。

0 投票
1 回答
1263 浏览

configuration - OS X Yosemite 上的 Apache 配置

升级到 Yosemite 后,我的 Apache 配置似乎损坏了。我的主要问题是 Document Root 已更改。现在我得到的只是“它有效!” 页。

我不知道为什么,对我来说一切都很好。

我已经正确设置/etc/apache2/httpd.conf并且 DocumentRoot 实际上/Library/WebServer/Documents和以前一样......也包含相同的......此外,没有加载/private/etc/apache2/httpd.conf为用户(例如)提供目录的附加配置。localhost/~user1

我不知道该怎么办。

有人可以帮我吗?

谢谢。