如何编写 Mod 重写以排除 Shibboleth url?

How to write a Mod Rewrite to exclude Shibboleth urls?

我有一个安装了 Shibboleth 插件的 wordpress 网站,它使用 Shibboleth 来验证用户。

站点 url:www.mytestsite.com/wordpress/blog

我想从 url 中删除子目录,所以,我按照下面的 url 完成了它

http://codex.wordpress.org/Giving_WordPress_Its_Own_Directory

现在,我可以访问没有子目录的博客

站点 url:www.mytestsite.com/blog

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

但现在 shibboleth 身份验证不起作用,因为 apache 试图在 wordpress 中找到 shibboleth urls 并显示找不到页面。

我需要编写一个 RewriteCond 来排除 shibboleth urls。

口令 url 是:

www.mytestsite.com/Shibboleth.sso/Login

www.mytestsite.com/Shibboleth.sso/Logout

www.mytestsite.com/Shibboleth.sso/Session

我需要帮助编写上述 url 的 RewriteCond 规则,请帮助。

您可以使用:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# ignore Shibboleth.sso and index.php from rewrite
RewriteRule ^index\.php|Shibboleth\.sso$ - [L,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

另一种选择,(根据我在问题中的评论):

RewriteCond %{REQUEST_URI} !\.sso/ # exclude Shibboleth extensions
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

...向第二个 RewriteRule 组添加另一个条件,排除包含点-s-s-o-正斜杠的请求。 :)