【发布时间】:2016-01-19 10:47:57
【问题描述】:
我们有一个从 CMS 生成内容的网站。问题是人们在没有http:// 的情况下添加了指向他们网站的链接,因此所有链接都以错误的方式生成。
例如:http://www.example.com/ec/shefaliaxena/eventupdate/www.shefalisaxena.com
我想做的是在最后一个斜杠之后获取数据,并使用正则表达式检查它是否是有效域,如果它是有效域,则将其重定向到该域,否则什么也不做。
我能够使用正则表达式 ([^/]+$) 在最后一个斜线之后提取数据,但想知道如何实现此重定向。
我可以通过编码轻松地做到这一点,但我想从 .htaccess 文件本身处理它,这样它就不会增加服务器的负担。
【问题讨论】:
-
你试过明显的吗?
RewriteRule ([^/]+)$ http://$1/ [L,NC,R=301] -
感谢您的评论,我确实尝试过,但此规则会重定向所有请求,我只想重定向那些在最后一个斜杠之后的请求(如果有有效域)。如果它不是一个有效的域,那么它应该简单地向前移动并且不应该做任何事情。
-
您需要准确确定那里使用了哪些类型的域,以便为其创建良好的表达方式。也就是说,您如何在浏览器中输出网站 URL?您可以随时检查
http://是否存在,如果不存在,请在页面上显示 URL 之前添加它。这样做可能是最好的,因为您根本不需要重定向。 -
如果可以的话,你能分享一些例子吗?
-
我不知道你的链接是怎么生成的。 This answer 可能会为您指明正确的方向。添加前缀后,您可以在页面上回显 URL。