2012-09-24 46 views
0

我剛剛重做我的網站,並試圖進行一些重寫以將URL更改爲新結構。我是那裏的大多數人,這要感謝一對人的支持,但我知道他們不應該處理這些問題,所以我希望我能在這裏得到最後一塊難題。使用重寫強制瀏覽器刷新而不進一步更改URL?

我想做四件事情。

  1. 將空格轉換爲下劃線。
  2. 通過將「(2003)」改爲「 - 2003」來消除括號。
  3. 更改html調用的結構。
  4. 強制重定向,以便搜索引擎獲得新地址。

眼下,這就是我:

RewriteEngine On 
Rewritecond %{HTTP_HOST} ^(desktopscenes.com|www.desktopscenes.com)$ [nc] 
RewriteRule ^(.*)\s(.*)$ $1_$2 [N] 
RewriteRule ^(.*)\((.*)$ $1-_$2 
RewriteRule ^(.*)\)(.*)$ $1$2 
RewriteRule ^(.*)slides/(.*)\.html$ /$1index.htm#$2.jpg [NE,R=301] 

一切正常,除了鏈接JPG文件,其中重定向正確內部,但我不能找到一種方法,使顯示正確地址欄上的新地址。

例如,這個老網址:

http://www.desktopscenes.com/Scenes from Big Sky Country (2003)/slides/First Montana Sunset.jpg 

正確顯示圖像在:

http://www.desktopscenes.com/Scenes_from_Big_Sky_Country_-_2003/slides/First_Montana_Sunset.jpg 

但瀏覽器欄不顯示新的地址,我相信也意味着搜索引擎沒有被通知新的地址。

我試着用「R = 301」重定向到同一個地址,但是失敗了,可能是因爲循環。我不確定還有什麼可以嘗試的,有什麼想法?

+0

你有什麼其他的規則?當你使用'R = 301'時導致循環的那些? –

+0

你是什麼意思,「失敗,可能是因爲循環」? –

+0

我試過的另一個規則是: 「RewriteRule ^(。*)slides /(。*)\。jpg $ /$1slides/$2.jpg [R = 301,L]」 但是,啓用它,說該網站重新定向的方式不會完成。 感謝您的回覆(不知道爲什麼格式不適用於回覆?) –

回答

0

看起來像前3條規則的迭代過程存在一些問題,請嘗試向它們添加[L]標誌。

的第二個問題是,你在最後一個規則(與「幻燈片」)正則表達式HTML比賽,但你給它JPG

第三個問題是你的RewriteCond只適用於第一條規則。 RewriteCond僅適用於緊隨其後的RewriteRule。它們不會在全球範圍內應用。

所以試着改變你的規則是這樣的:

RewriteEngine On 

# if the host isn't "desktopscenes.com", pass through and do nothing 
Rewritecond %{HTTP_HOST} ^(desktopscenes.com|www.desktopscenes.com)$ [nc] 
RewriteRule^- [L] 

RewriteRule ^(.*)\s(.*)$ /$1_$2 [L] 
RewriteRule ^(.*)\((.*)$ /$1-_$2 [L] 
RewriteRule ^(.*)\)(.*)$ /$1$2 [L] 

RewriteRule ^(.*)slides/(.*)\.(jpe?g|gif|png|bmp) /$1index.htm\#$2.$3 [NE,R=301,L] 
+0

非常感謝您的詳細回覆。我其實希望將html更改爲jpg(可能聽起來很奇怪)。這是行得通的。唯一沒有用的思想是,在空格和parens被刪除後,使用R = 301來刷新舊的JPG鏈接。所以你的建議對我不起作用,但是你給了我一些我需要改變的有用的想法,尤其是關於RewriteCond的評論,只有在它之後應用於RewriteRule。再次感謝! –

相關問題