簡體   English   中英

htaccess將規則.aspx重寫為.php

[英]Htaccess rewrite rule .aspx to .php

背景:我有一個使用ASP.NET 2.0構建的網站,並且該網站位於Windows托管上。 現在,我必須用PHP重寫網站並將其移至Linux托管中。 我有很多從網站到網站的鏈接,這些鏈接直接指向舊的.aspx頁。 該網站本身非常簡單,一個動態頁面和五個靜態頁面。

我將靜態.aspx頁另存為.php-pages,並用PHP重寫了動態頁。 動態頁面稱為City.aspx,我已經用PHP編寫了它,現在稱為City.php。

在舊的Windows主機上,我使用ASP.NET的URL映射作為友好的URL。 例如,對於Laajakaista / Ypaja.aspx的傳入URL請求已映射到City.aspx?CityID = 981。

我的目標:將所有尋找舊.aspx頁面的訪客和搜索引擎重定向到新的.php頁面。

我認為將訪問者重定向到新頁面的最簡單方法是進行重定向,將所有對.aspx文件的請求都重定向到.php文件類型。

因此,如果有人要求MYSITE / City.aspx?CityID = 5,他們將被帶入MYSITE / City.php?CityID = 5。

但是,要使其正常工作我很麻煩。

到目前為止,這是我發現的:

rewriterule ^([.]+)\.aspx$ http://www.example.com/$1.php [R=301,L] 

但是,我認為這不能處理文件類型之后的參數,我也不太確定該放在前面。

為了使事情變得更加復雜,在我以前的站點中,我使用了友好的URL,因此我擁有一個巨大的映射文件,其中包含如下所示的映射:

    <add url="~/Laajakaista/Ypaja.aspx" mappedUrl="~/City.aspx?CityID=981" />
    <add url="~/Laajakaista/Aetsa.aspx" mappedUrl="~/City.aspx?CityID=988" />
    <add url="~/Laajakaista/Ahtari.aspx" mappedUrl="~/City.aspx?CityID=989" />
    <add url="~/Laajakaista/Aanekoski.aspx" mappedUrl="~/City.aspx?CityID=992" />

我試圖做一個簡單的重定向,像這樣:

Redirect 301 Laajakaista/Aanekoski.aspx City.php?CityID=992

但無法使其正常工作。 我最終遇到內部服務器錯誤和一個50k的.htaccess文件...

任何幫助是極大的贊賞。

您是否真的要在htaccess文件中進行城市名稱/ ID轉換?

通常的方法是匹配Laajakaista/*.aspx並將地名作為參數傳遞給PHP腳本(然后將其轉換為ID)。 那不是更好的主意嗎?

如果這是一個選項,則可以執行以下操作:

rewriterule ^Laajakaista/([.]+)\.aspx$ city.php?cityname=$1 [QSA]
rewriterule ^([.]+)\.aspx$ $1.php?%{QUERY_STRING} [R=301,QSA]

不論是否使用301,您都可以這樣做-301會更改瀏覽器中可見的URL。

嘗試將QSA添加到標志中,使其為[R=301,L,QSA] 這代表“查詢字符串追加”,並將所有查詢字符串從舊URL追加到新URL。 這應該可以解決文件名后面的參數問題。

RewriteRule ^(.*)\.aspx$ http://www.example.com/$1.php [R=301,L,QSA]

至於其他映射,您可能需要重新考慮您的方法。 為每個城市繪制地圖似乎很麻煩。 您可能應該將城市名稱作為參數傳遞給city.php文件,並將其從名稱轉換為ID。 然后,它只是.htaccess文件中的一個RewriteRule條目,而不是每個城市的重定向。 例如,

RewriteRule ^Laajakaista/(.*)\.aspx$ city.php?cityname=$1 [L]

暫無
暫無

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

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