Apache:URL 中的 .profile 问题

Apache:URL 中的 .profile 问题

我使用 Google Apps SSO 对我的所有 WordPress 网站的用户进行身份验证。在身份验证过程中,Google 会向给定的 URL 返回几个参数,其中一个参数是范围其中包括https://www.googleapis.com/auth/userinfo.profile范围。

默认情况下,wordpress 依赖 apache 来提供 SEO 友好的 URL/永久链接。现在,当谷歌将我重定向到https://example.com/wp-login.php?state=###&code=###&scope=https://www.googleapis.com/auth/userinfo.profile+https://www.googleapis.com/auth/plus.me+https://www.googleapis.com/auth/userinfo.email服务器(apache)给了我一个404 错误。经过反复尝试,我发现如果我删除。轮廓从网址或直接删除. (点)重定向/行为按预期发生。

我不是 Apache 专家,所以我想了解这种行为以及如何在全球范围内解决这个问题。

- - 编辑 - -

.htaccess本地范围内的文件

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

据我了解,如果 URL 中指定的文件/目录不存在,则请求将交给 WordPressindex.php进行处理。

@MrWhite:回答你的问题,从我上面提到的 URL 来看,wp-login.php文件存在,但 apache 仍然将请求传递给index.phpWordPress,并返回 404 错误。

如果使用过滤器将 URL 从 更改为,example.com/wp-login.php则会example.com/login收到 403 错误。

但如果我删除. (点)在 profile 关键字之前的 url 中,一切都按预期工作。

-- 编辑 2 --

我发现发生这种情况是因为 mod_security 规则限制了对 OS 文件的访问。https://github.com/SpiderLabs/owasp-modsecurity-crs/blob/c06e2f5f7efa1c24f18ddf9a3298e3db4cdfeaac/rules/restricted-files.data#L34我知道这是一条必要的规则,但如何让 mod_security 允许https://www.googleapis.com/auth/userinfo.profile在 URL 参数中(仅限这个 URL)?

相关内容