Mod-Rewrite
Apache RewriteCond:將字元串注入正則表達式匹配組之間的 URI
編輯 這有效,需要使用 % 代替 $ 擷取組:
RewriteRule (.*) http://localhost:8081/%1/%{TIME_YEAR}1101%2 [P]
很難解決這個問題。
需要有條件地註入特定 URI 的日期字元串(用於代理到 Jetty 應用程序伺服器),條件是,如果不存在 8 位日期字元串,則注入它。
我想出的黑客是:
RewriteCond %{REQUEST_URI} ^/(foo|bar|baz)(.*) RewriteCond %2 !/(\d{8})(.*) RewriteRule (.*) http://localhost:8081$1/%{TIME_YEAR}1101$2 [P]
這在某種程度上有效,但並非全部 $ 2 is empty, $ 1 匹配整個 URI。
基本上最終發生的是請求
/foo/2
被重寫為/foo/2/20121101
,而我需要發生的是/foo/20121101/2
所以,鑑於 $ 1 matches the entire URI, how can I get it to match only foo|bar|baz, leaving $ 2 作為 URI 餘數,然後我可以將其夾在日期中?
另外,這是一種非常低效的方法嗎?Apache 文件通常表示連結
$$ OR $$s 所以不確定直接正則表達式是否是要走的路(當然更簡潔)。在 Apache 2.4 上,因此希望真正受益於速度增強(而不是在腳下射擊自己) 謝謝
如果我理解你做對了,我可能不會,我會說它可以更簡單:
RewriteCond %{REQUEST_URI} !/\d{8}(/|$) RewriteRule ^/(foo|bar|baz)(/?.*)$ http://localhost:8081/$1/%{TIME_YEAR}1101$2 [P]