【发布时间】:2011-02-13 09:37:15
【问题描述】:
背景:我有一个使用 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-file...
非常感谢任何帮助。
【问题讨论】:
标签: php asp.net .htaccess url-rewriting friendly-url