簡體   English   中英

Apache RedirectMatch 指令的正則表達式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM