问题标签 [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.
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,但以下四个除外:
- http://local.mysite.com/bt/sub/went_active
- http://local.mysite.com/bt/sub/success
- http://local.mysite.com/bt/sub/cancel
- http://local.mysite.com/bt/sub/expired
尽管如此,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?!?!?!
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/
(或任何子目录(路径)不再起作用。
你能明白为什么这不能正确解决吗?
其他调试:
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 全新安装。
php - 什么是适合我的网站的 .htaccess 重写器
我想我不明白 .htaccess 重写是如何工作的,所以我请求你的帮助。我需要将http://www.mywebsite.com/index.php?name=first更改为http://www.mywebsite.com/first。这可能吗?我当前的 .htaccess 文件的内容是:
显然它不起作用。.htaccess 文件的内容是什么?
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 的差异:
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端口有冲突吗...
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 中添加一些额外的指令或其他更改吗?我可以/应该采取哪些步骤来调试它?谢谢。
apache - AliasMatch 与正则表达式在 Apache 2.4 中不起作用
我曾经有如下 /CollabPortal14300 的别名,它工作正常
但是我们试图从 Alias 中删除数字并尝试使用 RegEx 代替。所以我切换到 AliasMatch 如下
切换 AliasMatch /CollabPortal\d{5}
apache后无法访问资源D:/Dev/Projects/CollabPortal/CollabPortal/target/CollabPortal/
以下是访问日志
在错误日志中我看到
有人可以帮助我为什么 AliasMatch 不起作用?
apache - mod_rewrite 在 apache 2.4 上无法正常工作
我以前用过其他主机,一切正常,但现在我已将其更改为新主机。在新主机上安装了 apache 2.4。
我有以下规则:
当我尝试访问例如/manage/时,它会显示索引页面,但如果我将一些额外的数据添加到路径中,它将显示我需要的内容。例如:/manage/some_data - 可以正常工作。但我想通过/manage/访问正确的目录。
configuration - OS X Yosemite 上的 Apache 配置
升级到 Yosemite 后,我的 Apache 配置似乎损坏了。我的主要问题是 Document Root 已更改。现在我得到的只是“它有效!” 页。
我不知道为什么,对我来说一切都很好。
我已经正确设置/etc/apache2/httpd.conf
并且 DocumentRoot 实际上/Library/WebServer/Documents
和以前一样......也包含相同的......此外,没有加载/private/etc/apache2/httpd.conf
为用户(例如)提供目录的附加配置。localhost/~user1
我不知道该怎么办。
有人可以帮我吗?
谢谢。