2015-06-27 117 views
0

我有網址:如何重寫url和重定向與Apache mod重寫?

ip地址/ panelname /主/ index.php文件

如何來重建到

ip地址/中心/ index.php文件

of course我們可以看到另一個頁面,不僅index.php,而且這個文件夾在url中我們可以永遠看到。

我tryed這樣做在.htaccess:

RewriteEngine on 
RewriteRule ^center/([^/]+)/?$ panelname/main/$1 [L] 
RewriteRule ^/panelname(.*)$ /center$1 [QSA,L,R=301,NC] 
Redirect 301 ^/panelname(.*)$ /center$1 

,但我沒有看到panelname重定向到中心。 但如果我輸入中心一切運作良好的(但我不舒爾,它在我的htaccess或符號連接,這點我是在文件系統創建工作良好)

如何重寫所有到另一個鏈接和HOWTO看重定向從舊的鏈接到我的新?謝謝。

回答

0

RewriteRule在目錄上下文(即.htaccess是)中,永遠不會以斜槓開始,因爲公共前綴會先從匹配部分中剝離。

Redirect確實匹配字符串,而不是正則表達式。在正則表達式上工作的變體是RedirectMatch。兩者都只能使用絕對URL(以斜線開頭)。

你要麼必須做到以下幾點:

RewriteRule ^panelname(.*)$ /center$1 [R,L] 

或:

RedirectMatch 302 ^/panelname(.*)$ /center$1 

變化[R][R=301]一旦你已經測試一切正常。如果您選擇第二個選項,則在測試一切正常後纔將302更改爲301。

0

如果你想給訪問者顯示/center/index.php並保持從舊URL到這個URL的重定向,那麼你將需要一個重定向和一個重寫規則(你已經擁有)。

RewriteEngine on 

# external redirect from old URL to new one 
RewriteCond %{THE_REQUEST} /panelname/main/(\S+) [NC] 
RewriteRule^/center/%1 [R=302,L] 

# internal forward from new URL to actual one 
RewriteRule ^center/([^/]+)/?$ panelname/main/$1 [L]