2011-11-29 90 views
1

編輯文件匹配:得到它的工作,這裏的最終版本國防部重寫子目錄中的

RewriteCond $1 ^(.*?)/(.*)$ 
RewriteCond apps/%1/content/%2 -F 
RewriteRule (.*) apps/%1/content/%2 [QSA,last] 

編輯:底部

我有這個原來的問題接近工作,這是在我的mod_rewrite規則

RewriteCond $1 ^(.*?)/(.*)$ 
RewriteCond %{DOCUMENT_ROOT}/johnsmith/apps/%1/content/%2 -f 
RewriteRule (.*) apps/%1/content/%2 [QSA,last] 

這將正確路線

http://host/johnsmith/blog/css/style.css 

請求

/docroot/johnsmith/apps/blog/content/css/style.css 

但是,我需要硬編碼到JohnSmith對下JohnSmith對.htaccess文件。是否有可能使用相對路徑,如果沒有,是否有可用的變量,所以我知道當前的.htaccess目錄?

下面

原來的問題比方說,我有/文檔根目錄的文檔根 我有一個CSS文件位於此處將Apache Web應用程序:

/docroot/johnsmith/apps/blog/content/css/style.css 

我想要檢索與此文件請求

http://host/johnsmith/blog/css/style.css 

.htaccess文件必須位於johnsmith文件夾中。以下規則集導致無限重定向循環

RewriteCond ^(.*?)/(.*)$ apps/$1/content/$2 -f 
RewriteRule ^(.*?)/(.*)$ apps/$1/content/$2 [QSA,last] 

如果我改變它咯,除暴安良的條件,我可以去一個頁面是一個簡單的PHP腳本打印出來的查詢字符串,這表明

RewriteRule ^(.*?)/(.*)$ showquerystring.php?path=apps/$1/content/$2 [QSA,last] 

path等於apps/blog/content/css/style.css,這正是我所期望的。

有誰能告訴我我錯過了什麼嗎?

此外,johnsmith文件夾可以命名爲任何內容,並且johnsmith中的.htaccess文件不應該硬編碼johnsmith。

更簡潔地說,我要問的是:

是否有可用的一個變量mod_rewrite的,這將等於/blog/css/style.css

回答

0
RewriteCond $1 ^(.*?)/(.*)$ 
RewriteCond apps/%1/content/%2 -F 
RewriteRule (.*) apps/%1/content/%2 [QSA,last] 
0

的問題是/johnsmith/blog/css/style.css重定向到/johnsmith/apps/blog/content/css/style.css其重定向到/johnsmith/apps/apps/content/blog/content/css/style.css等等。這是因爲apache會用重寫的url重複重寫過程。

另外我不確定RewriteCond規則是否正確。

所以這是我認爲它應該是:

RewriteRule ^apps/ - [L] 
RewriteCond %{DOCUMENT_ROOT}/apps/$1/content/$2 -f 
RewriteRule ^(.*?)/(.*)$ apps/$1/content/$2 [QSA,L] 
+0

%{DOCUMENT_ROOT} /應用/ $ 1 /內容/ $ 2將不能工作,因爲文檔根目錄爲/文檔根目錄,以便Apache將在/ docroot/apps /中查找。 。 。當文件實際上在/ docroot/johnsmith/apps /中時。 。 。 – Dave

+0

另外,如果它有效地匹配文件,它將不會無限循環。 – Dave