2013-07-23 47 views
2

如何將我的.htaccess文件中的RewriteBase設置爲REQUEST_URI的第一部分(domain.com/path或domain.com/path/to/file將RewriteBase設置爲/路徑)?htaccess將RewriteBase設置爲請求URI的開頭

+0

是的,我希望它設置爲第一個文件夾。我很難考慮如何更好地說出來。如果您有任何問題可能有助於更好地定義它,我會很樂意回答 – Cameron

回答

2

不能動態設置RewriteBase,但你可以通過手,從%{REQUEST_URI}提取第一路徑和手動添加到絕對 URL路徑的目標。例如:

RewriteBase/
RewriteCond %{REQUEST_URI} ^/([^/]+) 
RewriteRule ^foo$ /%1/bar.html [L] 

這裏,如果該規則是在URL路徑/a/b/c htaccess的文件,並請求/a/b/c/foo,該規則將改寫,作爲/a/bar.html

或者,如果你有很多的規則,你絕對需要的%反向引用,你可以在你的htaccess文件的最頂部將它設置爲一個環境變量:

RewriteBase/
RewriteCond %{ENV:first_uri_path} ^$ 
RewriteCond %{REQUEST_URI} ^/([^/]+) 
RewriteRule^- [E=first_uri_path:%1] 

# then your rules: 
RewriteCond %{HTTP_HOST} www\.(.*) 
RewriteRule ^foo$ /%{ENV:first_uri_path}/bar.php?domain=%1 [L] 

不知道如何可行這是一個解決方案,這取決於你實際上計劃如何處理「動態RewriteBases」。

+0

不是我真正希望聽到的,但從我的研究來看,似乎沒有更好的方法。謝謝回答! – Cameron