2011-06-18 49 views
1

正在處理我的網頁的重定向。我列出了所有新舊網站的列表。301重定向文件以清理網址

舊網址是/directory/subdirectory/file.php

新網址是乾淨的URL

/目錄/子目錄/文件/

一些新的URL匹配的舊網址沒有「.php」,而其他一些則不。

一個網頁提示:

RedirectMatch 301 ^/sales/products/item$ /products/item-name/ 

不過,如果下面給我一個重定向循環的?

RedirectMatch 301 ^/privacy-policy$ /privacy-policy/ 

我還沒試過,但希望不要讓自己陷入困境。

回答

0

使用Apache的mod_rewrite - 添加這些行到您的.htaccess文件:

# Activate Rewrite Engine 
RewriteEngine On 

# redirect *.php to "nice" url 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule ^(.*)\.php$ $1/ [R=301,QSA] 

# process "nice" urls by looking for appropriate .php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)/$ $1.php [L,QSA] 

這些規則會做兩兩件事:

1)重定向(301)* .PHP爲 「好」 的網址: directory/subdirectory/file.php將變爲directory/subdirectory/file/

2)正確地爲這些「好」的網址提供服務,例如directory/subdirectory/file/將被視爲directory/subdirectory/file.php

P.S.如果重定向不起作用(根據配置有時可能會發生)嘗試在$ 1之前添加斜槓(例如/$1

+0

謝謝,但對於具有不同url名稱的頁面呢?我在/directory/subdirectory/file.php有一些舊頁面,需要重定向到/ new-url-name/ – dardub

+0

有幾種方法可以做到這一點。最簡單的(可能取決於細節)會爲這些URL創建更多的重寫規則。你能舉幾個例子(from => to)以及這樣的重定向的大概數量。 – LazyOne