Dot-Htaccess
具有多個查詢字元串的 mod_rewrite
這是我的問題的擴展https://serverfault.com/a/761474/77231
我正在嘗試向
QUERY STRING
URL 添加一個附加參數並將空格更改為下劃線,但沒有成功。而不是簡單地改變:
http://somedomainname.com/grafana/dashboard/db/generic-ping?var-device=SF-some.machinename.com
到:
http://somedomainname.com/grafana/dashboard/db/generic-ping?var-device=SF-some_machinename_com
我正在嘗試更改其他參數,例如:
http://somedomainname.com/grafana/dashboard/db/generic-check?var-device=SF-some.machinename.com&var-check=Check CPU Load
到:
http://somedomainname.com/grafana/dashboard/db/generic-check?var-device=SF-some_machinename_com&var-check=Check_CPU_Load
在我之前回答的問題中使用相同的邏輯,我可以讓第一部分使用:
RewriteCond %{QUERY_STRING} (.*)\.(.*)\.(.*) RewriteRule ^/grafana/dashboard/db/generic-check /grafana/dashboard/db/generic-check?%1_%2_%3 [R=301]
但這顯然讓我得到了第一部分,結果如下:
http://somedomainname.com/grafana/dashboard/db/generic-check?var-device=SF-some_computername_com&var-check=Check%2520CPU%2520Load
我添加了一個額外的
QUERY_STRING
重寫規則,例如:RewriteCond %{QUERY_STRING} ^&var-check=(.*)\ (.*)\ (.*) RewriteRule ^&var-check var-check=%1_%2_%3 [R=301]
…沒有成功。
我也嘗試過將兩者結合起來:
RewriteCond %{QUERY_STRING} (.*)\.(.*)\.(.*)&(.*)\ (.*)\ (.*) RewriteRule ^/grafana/dashboard/db/generic-check /grafana/dashboard/db/generic-check?%1_%2_%3&%4_%5_%6 [R=301]
..也沒有成功,以及使用
%20
\s
and%2520
代替\
和空格…以及所有帶有管道分隔符的\ |\s|%20|%2520
.理想情況下,我希望在一次重寫中完成這項工作,但我很樂意讓它工作。任何幫助表示讚賞。
我能夠通過添加以下條件和規則來得到這個。
RewriteCond %{QUERY_STRING} ^(.*)(%2520)(.*)(%2520)(.*)$ RewriteRule ^(.+)$ $1?%1_%3_%5 [R=301]
不幸的是,我需要重複這個條件/規則,因為可能會出現很多空格。我嘗試了一堆不同的條件和規則
[N]
似乎從來沒有做它應該做的事情。我仍然願意接受答案,因為我覺得這可以做得更好、更可靠和/或更強大。