我不是mod_rewrite的或正則表達式不太好,但我需要最終使用301重定向一個網站,我感動。舊網站的結構是這樣方向與Apache的mod_rewrite
http://www.mywebsite.com/FF_Supersneaker_Black_Metallica_p/155-157.htm
和相同產品的新網站是如此
https://www.mywebsite.com/FF_Supersneaker_Black_Metallica_p.html
,我需要做的是提取物和去除「/ 155-157" 和改擴建爲.html代替的.htm
所以從邏輯上講,我想我需要找到的最後出現的‘/’和最後出現了「」。並將其中的所有內容的值改爲「」。那麼文件擴展名的變化無處不在互聯網上,但我不知道如何將它與其餘的內容結合起來。
編輯: 這裏是我的.htaccess文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule /(.*)/(.*)/[^/]*.htm$ /$1$2.html
</IfModule>
這裏是我的rewritelog當我試圖用它的相關條目。 (我只是改變了IP和域名。我用尾巴和複製的彈出當我試圖去到頁面的條目。
255.255.255.255 - - [25/Apr/2012:11:57:24 --0400] [www.mywebsite.com/sid#9b25ed8][rid#9e3cc48/initial] (1) [perdir /var/www/test/] pass through /var/www/test/FF_Supersneaker_Black_Metallica_p/155-157.htm
我添加的額外/(.*),因爲有一個額外的目錄我的測試頁面上。該結構是 http://www.mywebsite.com/test/FF_Supersneaker_Black_Metallica_p/155-157.htm 重定向到 http://www.mywebsite.com/test/FF_Supersneaker_Black_Metallica_p.html
對不起,問這麼多問題,也只能啓用重寫日誌買去到的apache.conf或httpd.conf文件的文件並重新啓動服務器,對不對?如果是這樣的話我沒有權限。
什麼是部分 「(。*)」 是什麼意思?是隻針對.com和.net和.edu等?我不認爲這是它所做的,但它是我能想出的唯一想法。由於 – 2012-04-24 16:39:27
的'/(.*)'捕獲(這是'()'一樣)比一切最後一個路徑組件別的其他並將其分配到'$ 1' ......這樣我們就可以在右擊手邊使用的規則。 – larsks 2012-04-24 16:42:33
等一下,查找除換行符以外的任何字符0次或更多次,對不對?現在這兩個被斜線包圍/(。*)/ [^ /] *。htm $/$ 1.html在那裏有什麼目的?我知道搜索和替換,但通常不會以s爲前綴?此外,$ 1.html中的$ 1是否僅僅表示採用前一個結果並將.html附加到它? – 2012-04-24 16:46:29