2012-12-08 46 views
0

只要有人能幫我解決這個HTACCESS問題,就好奇。使用HTACCESS或PHP轉發301 URL

我有這些舊網址需要正確轉發。

上一頁結構

domain.com/Canada/Accounting

domain.com/Canada/Trades

domain.com/Canada/Sales

正確結構

類別 -/jobs/accounting-jobs

LOCATION - /作業/作業基洛納

TOGETHER - /作業/計費的作業基洛納

域結構

domain.com/jobs/ [類別] - 工作[位置]

這是可能的,無論是由HTACCES或PHP ...只是不希望這些404'ed頁。 我有86+做,如果有一個很好的方式來轉發這些。 這就是我所擁有的,但我無法正確地轉發惡意網址。

OLD

/browse 
/Toronto/ 
/Canada/Administrative 
/Vancouver/ 
/Canada/Trades 
/Calgary/ 
/Canada/Hospitality 

這是我的.htaccess現在。

Options +FollowSymlinks 

    RewriteEngine on 
    RewriteBase/

    # 
    # Trailing slash check 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ 
    RewriteRule ^(.*)$ $1/ [L,R=301] 


    # 
    # PAGES 
    RewriteRule ^add-job/?$  /add-job.php [L] 
    RewriteRule ^jobs/?$  /results.php [L] 
    RewriteRule ^sitemap/?$  /sitemap.php [L] 

    # 
    # SEARCH 
    # CATEGORY - accounting-jobs 
    # LOCATION -   jobs-kelowna 
    # TOGETHER - accounting-jobs-kelowna 
    RewriteRule ^jobs/([a-zA-Z0-9_-]+)/([0-9]+)?$ results.php?whatwhere=$1&page=$2 
    RewriteRule ^jobs/([a-zA-Z0-9_-]+)/([0-9]+)/?$ results.php?whatwhere=$1&page=$2 

回答

1

301重定向頁面,你可以這樣做:

RewriteEngine On 
RewriteBase/

RewriteRule ^(\w+)/(\w+)$ /jobs/$2-jobs-$1 [R=301,L] 

這隻能滿足從以前的結構的URL(組合,你有沒有顯示只有位置或類別的任何先前的網址),但記即Canada將保持Canada,它不會變成canada。您也可以使用重寫將所有內容更改爲小寫。

你還必須注意,你不會重寫任何當前的URL,但沒有更多的信息,這應該做到這一點。

編輯:對於位置的唯一網址,你可以使用如下規則:

RewriteRule ^(\w+)/$ /jobs/jobs-$1 [R=301,L] 

同樣,你需要看的是你的重寫規則,不符合當前的網址干擾。如果是這種情況,則需要手動重定向每個舊網址。

對於小寫新的網址,你應該SO搜索,大約有轉換mized情況變量爲小寫的一些問題具有很好的答案。

+0

嘿,我添加了更多的例子,是否有可能你可以再看一眼......你發送的內容並不完全可能......可能嗎? – Justin

+0

@Justin看我的編輯。 – jeroen

1

如果你有mod_rewrite,你可以將這些行添加到您的.htaccess文件:

RewriteEngine on 
RewriteRule ^Canada/Accounting$ /jobs/accounting-jobs [R,L] 

但是,它不是從你想要什麼映射你的問題清楚。以前的3個URL是否應該重定向到3個新的URL?他們似乎並不相同。

+0

是,將工作,但我有86做的,不知道是否有一個更容易的選擇... – Justin

+0

您需要提供更多的信息。顯示幾個示例舊URL和他們應該映射到的內容。 – Cal

+0

我已經添加了一些更多的示例/內容...你能再看一次嗎? – Justin