[英]Regex for Apache RedirectMatch directive
如果 URL 不以儀表板結尾,我試圖將所有用戶請求重定向到不同的 URL。 下面是 RedirectMatch 指令,我用不同的 URL 模式在線正則表達式驗證器站點測試了正則表達式,所有站點都顯示正則表達式是正確的。
但由於某種原因,重定向沒有發生。
RedirectMatch 301 ^/^((?!dashboard).)*$ https://abc.xyz.com/$1
請讓我知道我是否在正則表達式中遺漏了一些內容。
Apache 配置文件
<VirtualHost *:443>
ServerName staging.abc.com
## Logging
LogLevel info
CustomLog "/var/log/apache2/abc_https_access.log" combined
ErrorLog "/var/log/apache2/abc_https_error.log"
ServerSignature Off
SSLEngine on
SSLProtocol -All +TLSv1.2
SSLCertificateFile /root/san/staging.abc.cer
SSLCertificateKeyFile /root/san/staging.abc.key
SSLCACertificateFile /root/san/abc.chain.cer
SSLVerifyClient require
RedirectMatch 301 ^/(?!.*dashboard$)(.*)$ https://abc.xyz.com/$1
## Proxy rules
ProxyRequests Off
ProxyPreserveHost On
# Preserve server status root
ProxyPass /server-status !
ProxyPass /rest http://localhost:8101/rest
ProxyPassReverse /rest http://localhost:8101/rest
<LocationMatch "^/rest">
SSLOptions +StdEnvVars
SSLRequire %{SSL_CLIENT_S_DN_CN} !~ m#(^testuser$)#i
SSLVerifyClient require
SSLVerifyDepth 2
RequestHeader unset Authorization
RequestHeader set user_id %{SSL_CLIENT_S_DN_CN}s
</LocationMatch>
<Directory />
Order Deny,Allow
Deny from all
Options None
AllowOverride None
</Directory>
</VirtualHost>
如果 URL 不以儀表板結尾,我正在嘗試將所有用戶請求重定向到不同的 URL
您可以使用此重定向規則:
RedirectMatch 301 ^/(?!.*dashboard$)(.*)$ https://abc.xyz.com/$1
如果 URL 以dashboard
結尾,則(?..*dashboard$)
是使匹配失敗的否定前瞻。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.