簡體   English   中英

htaccess重定向301網址重寫

[英]htaccess redirect 301 url rewrite

我們陷入了.htacces中的網址重寫和重定向301

目前,我們的Internet站點只有一個文件(index.php),該文件作為變量傳遞給類別ID,然后顯示該類別的內容。

例如:類別Nr 4通過鏈接www.oursite.com/index.php?CATID=4進行調用,該鏈接顯示類別“ map-france”的內容,類別Nr 5通過鏈接www.oursite進行調用。 com / index.php?CATID = 5,它顯示類別“ map-italy”的內容

我們總共有大約800個類別。

我們想重寫URL,以便顯示類別名稱:例如:www.oursite.com/map-france而不是www.oursite.com/index.php?CATID=4 www.oursite.com/map -italy而不是www.oursite.com/index.php?CATID=5

目前最好的想法是在.htacces中使用mod_rewrite函數

到目前為止,我們已經設法通過以下代碼實現這一目標:

RewriteEngine On
RewriteRule    ^map-france/?$    index.php?CATID=4    [NC,L]
RewriteRule    ^map-italy/?$    index.php?CATID=5    [NC,L]

這很有效。

為了避免來自搜索引擎的雙重索引,我們還應該將重定向301從舊網址重定向到新網址。 我們使用以下代碼設法做到這一點:

RewriteCond %{QUERY_STRING} CATID=4
RewriteRule ^index\.php$  http://www.oursite.com/map-france/? [L,R=301]

RewriteCond %{QUERY_STRING} CATID=5
RewriteRule ^index\.php$  http://www.oursite.com/map-italy/? [L,R=301]

如果我們將所有內容放在一起,它將無法正常工作,並且似乎會產生永無止境的重定向循環

我們做錯了什么?

非常感謝你的幫助 :)

嘗試匹配請求,而不是%{QUERY_STRING}

RewriteCond %{THE_REQUEST} \?CATID=4
RewriteRule ^index\.php$  http://www.oursite.com/map-france/? [L,R=301]

RewriteCond %{THE_REQUEST} \?CATID=5
RewriteRule ^index\.php$  http://www.oursite.com/map-italy/? [L,R=301]

重寫引擎將循環直到URI停止更改為止,這意味着您的第一個規則將添加查詢字符串,而第二個規則將與查詢字符串匹配並重定向到不包含查詢字符串的位置。 然后瀏覽器再次發出相同的請求,並且您的第一個規則被應用,然后第二個規則與查詢字符串匹配並再次重定向瀏覽器,依此類推。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM