2011-06-16 58 views
0

我正在移動一個網站到WordPress,但我想保持目前的URL結構爲SEO的目的。WordPress的.htaccess重定向文件擴展名和不區分大小寫

當前網站使用.htm和.html文件的組合。當請求是.html時,我發現重定向到.htm方面取得了成功。

例如

RedirectMatch 301 (.*)\wp-site/mywebpage.html$ http://www.mydomain.com/wp-site/mywebpage.htm 

我有以下麻煩:

當.html文件具有上,下殼體

。我似乎無法找到一個解決方案,重定向任何請求,儘管案件其.htm等效

例如:My-Posts/Alpha-Page.html需要重定向到my-posts/alpha-page.htm或MY-POSTS/ALPHA-PAge.html重定向到my-posts/alpha-page.htm(或任何包含大寫字母的「my-posts/alpha-page」),基本上所有請求都需要重定向到全部小寫。 htm文件)

我知道這有點困難,因爲它是一個組合1)我重定向到.htm和2)爲不區分大小寫。

幾件事情要考慮:

  1. 我知道WordPress的職位 不區分大小寫。 Wordpress的靜態 頁面區分大小寫。
  2. 我知道RedirectMatch不會工作 ,因爲它完全匹配它。
  3. 我相信我需要使用RewriteCond 和RewriteRule,但似乎無法在 找到「好」的步驟 的解釋。另外,我不知道他們的變量(即: %{HTTP_HOSTS})和常規的 表達式約定 。
  4. 我不是一個Apache/.htaccess或 正則表達式專家,任何 手段。

從理論上講,它似乎應該有一種方法來工作。我會繼續看看我是否可以在這裏找到解決方案在這裏在stackoverflow或其他外部資源,如果我在這裏找到一個解決方案在stackoverflow,我將標記爲解決,並將其刪除。

任何幫助表示讚賞!

感謝

更新06月17日:

這是我目前的.htaccess文件

# BEGIN WordPress 

    <IfModule mod_rewrite.c> 


    RewriteEngine On 


    RewriteBase /wp-test-2011-06-13/ 

    RewriteRule ^index\.php$ - [L] 

    RewriteCond %{REQUEST_FILENAME} !-f 

    RewriteCond %{REQUEST_FILENAME} !-d 

    RewriteRule . /wp-test-2011-06-13/index.php 


    RedirectMatch 301 (.*)\wp-test-2011-06-13/redirect.html$ http://www.mydomain.com/wp-test-2011-06-13/redirect.htm 


    RewriteRule ^ORLANDO-criminal-defense-attorney/defense-attorney-NEJAME.html$ /orlando-criminal-defense-attorney/defense-attorney-nejame.htm [QSA,NC,R=301] 


    </IfModule> 


    # END WordPress 

UPDATE二○一一年六月二十○日:

這裏是我的電流。 htaccess文件:

# BEGIN WordPress 
    <IfModule mod_rewrite.c> 

    Options +FollowSymlinks 
    RewriteEngine On 

    RewriteBase /wp-test-2011-06-13/ 
    RewriteRule ^/wp-test-2011-06-13/index\.php$ - [L] 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule .* /wp-test-2011-06-13/index.php 

    RedirectMatch 301 (.*)\wp-test-2011-06-13/redirect.html$ http://www.mydomain.com/wp-test-2011-06-13/redirect.htm 

    RewriteRule ^ORLANDO-criminal-defense-attorney/defense-attorney-NEJAME\.html$ /orlando-criminal-defense-attorney/defense-attorney-nejame.htm [QSA,NC,R=301] 

    </IfModule> 

    # END WordPress 

當我輸入http://www.mydomain.com/wp-test-2011-06-13/ORLANDO-criminal-defense-attorney/defense-attorney-NEJAME.html(或小寫等價物)時,我得到一個Wordpress「Page Not Found」頁面。HTML)

+0

據我瞭解你想要的:1)從HTML到HTM最終網址更改文件擴展名; 2)在重定向時忽略該情況..或將最終頁面URL更改爲小寫? – LazyOne 2011-06-17 13:43:50

+0

1)是的。更改.html的請求以重定向到.htm 2)我相信我想忽略大小寫。 MYPAGE.html - > mypage.htm,或mYPaGe.html - > mypage.htm,或MYpaGE.html - > mypage.htm等... 基本上忽略了請求的情況並重定向到小寫.htm版本 – user801816 2011-06-17 14:05:34

+0

我認爲這樣的東西可能會起作用。 'code' RewriteCond%{REQUEST_URI}^section/individual-page.html [NC] RewriteRule ^(。*)$ http://www.mydomain.com/wp-install/section/individual-page.htm/$ 1 [L,R = 301] 我認爲我走在正確的軌道上。 [NC]應該忽略大小寫嗎? – user801816 2011-06-17 14:12:43

回答

1

1)是的,你可以「輕鬆地」與mod_rewrite的.. 這些指令需要的幫助做到這一點被放置在一個配置文件(內<VirtualHost>標籤)作爲RewriteMap指令不能使用在.htaccess不幸的。

RewriteEngine On 
RewriteMap upper2lower int:tolower 
RewriteRule ^/(.+)\.html$ /${upper2lower:$1}.htm [QSA,NC,R=301] 

2)如果您不能修改配置文件,那麼你可以做至少重定向到htmlhtm

RewriteRule ^(.+)\.html$ /$1.htm [QSA,NC,R=301] 

很少有能與的.htaccess可以使用更多的選項:

3)創建爲每個這樣的頁面的重寫規則 - 非常低效的,並且需要不斷更新(每一個新的頁面新規則) - 不區分大小寫這裏:

RewriteRule ^MYPAGES/some-Page.html$ /mypages/some-page.htm [QSA,NC,R=301] 

4)兩步驟重定向:1)HTML重定向到一些特殊的PHP文件,該文件在執行重定向到正確的是小寫字母的URL。可以..但是醜陋(加上2個重定向)。

如果你不能做#1,那麼堅持#2,並確保你在<header>中使用<link rel="canonical" href="PROPER_URL_GOES_HERE"/>

http://www.google.com/support/webmasters/bin/answer.py?answer=139394

+0

@LazyOne感謝您的回覆。是否可以利用步驟3?只要忽略大小寫並將.html重定向到.htm,我不介意重定向所有單個頁面。我試着將步驟3)放在我的.htaccess中,但它似乎沒有用。我的發言順序是否重要?將.html重定向到.htm不需要發生所有請求;它可以是特定的頁面(或在這種情況下,帖子)。 – user801816 2011-06-17 15:42:50

+0

這些不是步驟,而是選項(彼此分開)。但是,你可以和#3一起去。是的,訂單很重要。請顯示您當前的.htaccess(編輯您的原始問題) - 我想看看您嘗試插入新指令的位置。 – LazyOne 2011-06-17 15:47:47

相關問題