2017-06-02 13 views
0

問題重寫URL,以便第一個文件夾將URI

被刪除我嘗試撰寫該重寫這個

http://my.domain.pl/subdir/a/b/c/d/foo.bar 

這個

http://my.domain.pl/subdir/b/c/d/foo.bar 

沒有a/一個重寫規則目標網址中的文件夾。

subdir是放置.htaccess的文件夾。該規則必須刪除subdir旁邊的第一個文件夾,而不管路徑後面有多少個文件夾。

因此,例如,該

http://my.domain.pl/subdir/a/b/c/d/ghi/hij/foo.bar 

應rewrited這個

http://my.domain.pl/subdir/b/c/d/ghi/hij/foo.bar 

爲好。

我的做法

我準備的規則,但我想象它沒有工作:

RewriteRule ^[^/]+/(.+)\.([^/]+)$ $1.$2 [L] 

此規則rewrited

http://my.domain.pl/subdir/a/b/c/d/foo.bar 

http://my.domain.pl/subdir/foo.bar 

奇怪的是一個非常類似的規則,沒有在$1.$2的時間段,但沒有一封信被重寫,因爲我預期。我的意思是這樣的規則:

RewriteRule ^[^/]+/(.+)\.([^/]+)$ $1x$2 [L] 

它rewrited這

http://my.domain.pl/subdir/a/b/c/d/foo.bar 

這個

http://my.domain.pl/subdir/b/c/d/fooxbar 

在逃避這樣$1\.$2規則沒有幫助的時期。

問題

如何創建規則刪除該路徑的第一個文件夾?

回答

0

您沒有使用適當的正則表達式匹配要求uri.Try這樣的:

RewriteRule ^[^/]+/(.*?)/(.+\.[^/]+)$ /subdir/$1/$2 [L] 
+0

它不工作。這個路徑收縮在循環中執行幾次。我的規則也是同樣的問題。所以我們必須制定一個規則來處理只收縮的規則。我們可以添加一個RuleCond來檢查「a」文件夾是否存在,並在存在時進行重寫,但是應該知道該文件夾的名稱。 – trzczy

相關問題