apache 可以按条件实现跳转与重写吗?

2014-08-25 17:16:43 +08:00
 muziyue
如果符合是重写规则的连接,直接访问
如果不符合重写规则,跳转到另一个网站

比如访问 a.com/index/a/xxxa.com/index.php?a=xxx
访问 a.com/news.php 就跳转到 b.com/news.php
2356 次点击
所在节点    程序员
10 条回复
niko
2014-08-26 09:22:20 +08:00
完全可以。

RewriteRule ^/index/a/(.*)$ /index.php?a=$1 [PT]
RewriteRule ^news.php$ http://b.com/news.php [NC,NE,R=301,L]
muziyue
2014-08-26 09:38:40 +08:00
@niko 额,这个news不是固定的,可能是其他任何文件
seki
2014-08-26 10:12:31 +08:00
@muziyue 你问可不可以,我说那肯定可以,关键词是 RewriteEngine。楼上是按照你给的例子给出的代码,有需要可以去了解一下正则表达式
muziyue
2014-08-26 11:09:48 +08:00
@seki 问题是设置了通配之后所有的都跳转了
不加的话前面的几条重写规则是生效的,加了就一起跳转了
seki
2014-08-26 11:12:21 +08:00
@muziyue 不是很理解你描述的情况……
muziyue
2014-08-26 11:15:50 +08:00
@seki 我有几个页面只想重写 不想跳转 所以需求是『除了这几个页面重写了url,剩下的都301到另一个域名』
muziyue
2014-08-26 11:17:54 +08:00
@seki 现在是做了301之后,所有的页面都301了,我不知道怎么排除那几个页面
seki
2014-08-26 11:28:32 +08:00
@muziyue 哦,不好意思之前误解了。这种情况可以用 RewriteCond

RewrtiteCond %{REQUEST_URI} !^/index/
RewriteRule ^(.*)$ http://b.com/$1 [NC,NE,R=301,L]

RewrtiteCond %{REQUEST_URI} ^/index/
RewriteRule ^/index/a/(.*)$ /index.php?a=$1 [PT]
seki
2014-08-26 11:29:29 +08:00
@muziyue 代码是现撸的,没验证,希望没错 = =
muziyue
2014-08-26 11:35:07 +08:00
@seki 应该就是这个,tks

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/129818

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX