几年前,我创建了一个数据库驱动的ASP.NET站点,该站点使用单个APSX页面显示所有站点页面.因此,该网站的所有网址都采用以下格式:
/main.aspx?page=Page+Title+One
/main.aspx?page=Another+Article+Title
/main.aspx?page=Third+Page
Run Code Online (Sandbox Code Playgroud)
main.aspx页面获取查询字符串数据(例如,Page + Title + One),并将其用作从SQL Server数据库中提取相应文章内容的键.页面的实际标题存储在带空格而不是加号的数据库中(例如"Page Title One").
在URL查询字符串中使用+号作为单词分隔符的糟糕决定导致最近搜索引擎出现很多问题(重复内容等),因此我想修复它,但不更改URL.
我想要做的是当搜索引擎或访问者试图访问错误的URL时,错过+符号并改为使用空格,例如:
/main.aspx?page=Page Title One
Run Code Online (Sandbox Code Playgroud)
我想做301永久重定向到:
/main.aspx?page=Page+Title+One
Run Code Online (Sandbox Code Playgroud)
为了能够做到这一点,我需要检查查询字符串值是否有加号或空格,但是当我使用Request.QueryString ["page"]得到值时,即使实际的问题字符串已经加入,我仍然得到字符串白色空间"页面标题一".
该站点在IIS6/Win 2003上运行.
我怎样才能做到这一点?