我真的很糾結於重寫規則的語法。我希望你能幫忙。在使用RewriteRule語法和配置時遇到問題,具有挑戰性
我使用了一個節點包模塊來創建一堆超級ajaxy站點的html快照。該模塊在命名爲URL的指令中輸出快照,以供稍後與escape_fragment重寫規則一起使用。所以exampledomain.net/a45.php?lang=eng輸出爲./snapshots/a45.php?lang=eng/index.html。因此,要進入該目錄,我必須跳過特殊字符。
我試圖重寫http://testdomain.net/a45.php?lang=eng到http://testdomain.net/snapshots/a45.php?lang=eng/index.html,我無法讓我的重寫規則正常工作。
這裏是我試過的語法:子目錄
Options +FollowSymLinks
RewriteEngine On
ReWriteBase /var/www/vhosts/testdomain.net/httpdocs/secure/clients/amg/3dot0
RewriteRule ^a45\.php?lang=eng$ /snapshots/a45.php?lang=eng/index.html
我也有和無RewriteBase試過 在.htaccess文件。 我也嘗試了上面的第二個url轉義和第一個url上的幾個不同的字符ALL ... OH和我一定會啓用Allowoverride all在整個httpdocs目錄以及主要的vhost.conf文件 - 我知道該指令正在工作,因爲Options + Indexes允許我瀏覽整個樹中的目錄。
任何建議或線索都非常感謝!
OH!我想你必須在這裏使用{QUERY_STRING}。嗯更多閱讀.. – funkenstein
類似RewriteCond%{QUERY_STRING} ^(\ w +)=(\ w +)$ RewriteRule ^/path/path /%1 /%2? – funkenstein
您可以查看QUERY STRING中的內容,甚至可以從RewriteCond中獲取它,但要注意使用奇怪字符的任何可能會混淆服務器操作系統的內容,例如?,&,=,/。你究竟想在這裏做什麼?你打算根據QS中的內容運行特定的index.html,還是試圖將某些內容轉儲到新目錄中? –