2013-02-02 88 views
0

請看這篇文章的編輯。我給出的最後一個代碼示例是我試圖完成的。我正在處理147行代碼。我想我實際上並沒有試圖制定一個規則,因爲我試圖找出這些變量的重定向。.htaccess重定向:從舊網站的變量到Drupal和網址別名

好吧,我一直在研究這幾個小時,正則表達式apache重寫規則變得非常具體,我很難過。客戶要求將舊網站的URL重寫/重定向到新的drupal站點和具有url別名的相應頁面。有147個變量(所有1 - 216(失序)) 實施例: 我需要

/hardware/bikes.php?recordID=1 to redirect to http://www.bikerus.com/?q=hardware/first-bike-that-really-flies 

然後

/hardware/bikes.php?recordID=2 to redirect to http://www.bikerus.com/?q=hardware/second-awesome-bike-that-really-flies 

這是我到目前爲止:

RewriteCond %{QUERY_STRING} ^recordID=([0-9]+)$ 

RewriteRule ^/hardware/bikes\.php?recordID=%1$ http://www.bikerus.com/?q=hardware/first-bike-that-really-flies 

這顯然是不工作,任何想法女士和姐姐?

理想情況下,如果我能找出Drupal的另一個問題,我還沒有想出來(多年),那將是一件好事。 有一個重定向是這樣的:

redirect 301 /hardware/1.html http://www.bikerus.com/hardware/first-bike-that-really-flies 

取而代之的是:

redirect 301 /hardware/1.html http://www.bikerus.com/?q=hardware/first-bike-that-really-flies 

但我的第一個問題是目前的當務之急。 在此先感謝。

EDITS: 我試圖重定向到的文件不是靜態的,它們是由Drupal數據庫生成的網址別名。

最後,是的,我將需要147個個人記錄(硬編碼),我的問題是如何做到這一點:

redirect 301 /hardware/bikes.php?recordID=1 http://www.bikesrus.com/?q=hardware/random-bike-title-one 
redirect 301 /hardware/bikes.php?recordID=2 http://www.bikesrus.com/?q=hardware/random-bike-title-two-ewhbcfn 
redirect 301 /hardware/bikes.php?recordID=3 http://www.bikesrus.com/?q=hardware/random-bike-title-three-kxjhmuflr 
redirect 301 /hardware/bikes.php?recordID=4 http://www.bikesrus.com/?q=hardware/random-bike-title-four-more-random-stuff 

而對於那些不知道,Drupal有一個乾淨的URL重寫規則,隨附.htaccess文件,我正在編輯:

RewriteRule ^(.*)$ index.php?q=$1 [L,QSA] 

因此,我需要能夠瀏覽此以及。

+0

第一輛自行車真的蒼蠅是靜態的嗎? –

+0

這樣:'RewriteRule ^/hardware/bikes \ .php?recordID =%1 $'永遠不會匹配,因爲你在正則表達式中包含查詢。 –

+0

對,我知道。我正在修補它。我只是以此爲出發點。有什麼建議麼? – CarlosM

回答

0

只是想通了。

RewriteCond %{THE_REQUEST} recordID=1 
RewriteRule . http://www.bikesrus.com/hardware/bike-that-really-flies? [R=301,L] 

BOTH !!我自己,多一點搜索。不同的是,我這次把「硬編碼」這個詞放到了我的搜索關鍵字中。感謝所有評論過的人。

0

你的第二個問題的問題是,redirect真的很臭,因爲任何事情都經過了簡單的重定向。你需要一個RewriteRule,使這個:

redirect 301 /hardware/1.html http://www.bikerus.com/?q=hardware/first-bike-that-really-flies 

更多類似這樣的:

RewriteRule ^([a-zA-Z]+)/$ /?q=$1 [R=301,L] 

或者,也許這樣的:

RewriteRule ^([a-zA-Z]+)/(.*)$ /?q=$1/$2 [R=301,L] 

但它不是在您的文章清楚,你所得到的first-bike-that-really-flies東西來自。所以不清楚如何在Drupal中處理。非常具體到您的設置。

其實只是回答了一個mod_rewrite類似於這個over here的問題。可能會給你更多的見解。

+0

那麼Drupal的東西就是它們有一個內置的url別名。它是這樣的:RewriteRule ^(。*)$ index.php?q = $ 1 [L,QSA]但是當你試圖在它上面寫入重定向的時候,它只有在你將變量加回到重定向(或者你會得到一個404),就像我在第二期中所引用的那樣。謝謝你的時間。 – CarlosM

相關問題