我怎么摆脱?URL中的(问号)标识查询字符串的开头?

Evi*_*mes 1 coldfusion seo

我正在使用ColdFusion 9.1.2.

我建立了一个新的网站,用于解析域名和斜杠后的查询字符串.剩下的是MusicianID,然后是用于帮助SEO的字符串.URL如下所示:

http://awesomealbums.info/?1085/jim-croce
http://awesomealbums.info/?1077/james-taylor
Run Code Online (Sandbox Code Playgroud)

当我使用Facebook分享它时,Facebook会删除问号并对其进行编码.他们似乎无法解析它,因此他们将其显示为主页.

抛出一个我无法控制的错误:

http://awesomealbums.info/1085/jim-croce
http://awesomealbums.info/1077/james-taylor
Run Code Online (Sandbox Code Playgroud)

我注意到StackOverlfow和其他网站能够排除启动查询字符串的问号.我想也这样做.但是,我无法更改任何IIS或CF管理员设置.我需要编写解决方案代码.我试过了,但我得到IIS告诉我他们找不到页面.

我希望我的网址看起来像这样:

http://awesomealbums.info/1085/jim-croce // same as above but no ?
http://awesomealbums.info/1077/james-taylor // same as above but no ?
Run Code Online (Sandbox Code Playgroud)

这是我现在用于解析URL并获取MusicianID的代码.

 <cfscript>
QString = CGI.QUERY_STRING;
if (QString eq "") {
    include "Home.cfm";
} else if (QString eq "WhoAmI") {
    include "WhoAmI.cfm";
} else {
    IndexOfSlash = Find("/", QString);
    if (IndexOfSlash eq 5) {
        ThisID = left(QString, 4);
        if (isNumeric(ThisID)) {
            MusicianID = ThisID;
            include "Musician.cfm";
        }
    } else {
        location(url="http://www.awesomealbums.info" addtoken="false");
    }
}
Run Code Online (Sandbox Code Playgroud)

如何更改我的网站,以便可以删除问号,Web服务器不会变得质朴,我可以解析查询字符串?

Rol*_*lig 5

您要查找的关键字是URL重写.它必须在Web服务器上发生,因为您要处理顶级目录中的所有请求.如果您的Web服务器是Apache httpd,您可以这样做:

RewriteEngine on
RewriteRule ^/(\d{4})/([\w-]+)$ /?$1/$2 [L]
Run Code Online (Sandbox Code Playgroud)

要么

RewriteRule ^/(\d{4})/([\w-]+)$ /Musician.cfm?MusicianID=$1 [L]
Run Code Online (Sandbox Code Playgroud)