如何将URL重写为小写而不是在服务器上进行双击?

时间:2012-02-04 22:25:48

标签: jquery coldfusion seo

我正在使用ColdFusion 8.0.1和jQuery 1.4.3。

我正在开发一段代码,使用jQuery向CFC发出Ajax请求。我注意到我发出的每个Ajax请求实际上都是两次提交给服务器。 (我在Firebug中观察到这一点。)第一次打击被迫降低案例。第二次打击,现在是小写,由于重写失败。

我向我的老板询问了这个问题,他向我指出了application.cfm文件中的一些代码,这些代码强制URL为全部小写,然后使用CFHEADER进行301重定向。我评论说代码和我的Ajax请求工作得很好。

但是,出于搜索引擎优化的目的,我们需要使用application.cfm或htaccess文件中的重写强制所有请求小写。

我理解在htaccess文件中执行此类函数是一个更好的主意。

我的问题是,使用htaccess文件的url重写是否实际上加载了两次页面,就像CFHEADER一样。我不能在星期一之前处理这个代码,我想知道选项和最佳答案。

RewriteEngine On
RewriteMap  lc int:tolower
RewriteCond %{REQUEST_URI} [A-Z]
RewriteRule (.*) ${lc:$1} [R=301,L]

RewriteEngine On
RewriteMap lowercase int:tolower
RewriteCond $1 [A-Z]
RewriteRule ^/(.*)$ /${lowercase:$1} [R=303,L]

感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

不,它不会重击服务器,它只是更改(重写)它请求的URL。这就是为什么,在my last question中,当我需要双击服务器时,单独的.htaccess无法做到,我不得不求助于PHP标题。

编辑:通过双击服务器我的意思是执行脚本并加载页面。我的理解是,使用.htaccess重写URL会对你产生预期的效果,因为它不会向浏览器返回任何内容,直到满足所有重写条件,它不会重定向url,它只是重写它

另一种方法是在JavaScript中,在发送Ajax请求之前,运行类似这样的

ajax_url = 'http://ExaMple.CoM';
ajax_url = ajax_url.toLowerCase();

将字符串转换为小写。

答案 1 :(得分:1)

Evik,如果网址中有大写字母,您只会获得重定向,因此,如果您的AJAX请求网址完全在您的控制范围内,请确保以小写字母开头!

除此之外 - 作为替代方案 - 您可以在RewriteRule上放置一些RewriteCond,以便您的AJAX请求不会发生重定向。这些不是那种需要为SEO目的进行修改的请求,所以最好简单地留下它们。

答案 2 :(得分:0)

如果您使用的是Google分析,则可以强制所有统计信息在btw帐户设置中记录为大写或小写。我做了类似的事情,但我也在GA代码中使用了较低的套管正则表达式。