我正在使用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服务器不会变得质朴,我可以解析查询字符串?
您要查找的关键字是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)
| 归档时间: |
|
| 查看次数: |
1270 次 |
| 最近记录: |