请教一个url重写rewrite怎么写

时间:2022-11-26 18:54:18
服务器是apache2.2
有如下的一些网址
http://www.host.com/a/axxxx
http://www.host.com/b/bxxxx
xxxx为4个小写字母或者数字的组合(最后一个/后面总共是5位)

我想让凡是最后/后是5位的地址都变成下面的形式
http://www.host.com/axxxx
http://www.host.com/bxxxx

apache的rewrite能做到吗?
如果能,规则要怎么写?

小弟刚用apache,对rewrite不熟,希望大家帮忙。

13 个解决方案

#1


陪LZ学习:)

#2


apache不熟,WIN2003知道怎么做,楼下会的继续。

#3


不熟一同学习了。

#4


试试这个:
RewriteRule ^(a|b)/(a|b)(\w{4,4})$   /$2$3

#5


刚才放.htaccess里用PHP测了一下,应该可以.

#6


http://msdn.microsoft.com/zh-cn/library/ms972974.aspx#XSLTsection128121120120
 看这里,里面介绍很详细

#7


引用 4 楼 freewing 的回复:
试试这个:
RewriteRule ^(a|b)/(a|b)(\w{4,4})$   /$2$3


你这个是输入http://www.host.com/a/axxxx访问http://www.host.com/axxxx吧,
和我要的结果是相反的

#8


freewing:

受你的启发,我自己倒是把这个规则写出来了。
<IfModule mod_rewrite.c>
    RewriteEngine On
    #http://www.host.com/axxxx => http://www.host.com/a/axxxx
    RewriteRule ^(\w{1,1})(\w{4,4})/{0,1}$ /$1/$1$2 [QSA,L]
</IfModule>

现在又有另一个问题了,页面从http://www.host.com/axxxx 转到 http://www.host.com/a/axxxx后,浏览器的地址变成了http://www.host.com/a/axxxx,如何让浏览器中显示的地址不变呢,也就是还是显示为http://www.host.com/axxxx

#9


顺便学习。顶顶贴。

#10


学习了

#11


好久没有用php了

#12


学习学习

#13


引用 7 楼 zhongmao 的回复:
引用 4 楼 freewing 的回复:
试试这个: 
RewriteRule ^(a|b)/(a|b)(\w{4,4})$  /$2$3 
 

你这个是输入http://www.host.com/a/axxxx访问http://www.host.com/axxxx吧, 
和我要的结果是相反的


对比下楼顶的问题,貌似有点矛盾...


引用 8 楼 zhongmao 的回复:
freewing: 

受你的启发,我自己倒是把这个规则写出来了。 
<IfModule mod_rewrite.c> 
    RewriteEngine On 
    #http://www.host.com/axxxx => http://www.host.com/a/axxxx 
    RewriteRule ^(\w{1,1})(\w{4,4})/{0,1}$ /$1/$1$2 [QSA,L] 
</IfModule> 

现在又有另一个问题了,页面从http://www.host.com/axxxx 转到 http://www.host.com/a/axxxx后,浏览器的地址变成了http://www.host.com/a/axxxx,如何让浏览器中显示的地址不变呢,也就是还是显示为http://www.host.com/axxxx


更不明白楼主想干啥了...  楼主可以再仔细理解下“rewriter”

假如理解楼主的真实地址是http://www.host.com/a/axxxx 想让人通过http://www.host.com/axxxx来访问,那就看看我最早回答的。
假如理解楼主的真实地址是http://www.host.com/axxxx 想让人通过http://www.host.com/a/axxxx来访问,那就是你自己写的。

#1


陪LZ学习:)

#2


apache不熟,WIN2003知道怎么做,楼下会的继续。

#3


不熟一同学习了。

#4


试试这个:
RewriteRule ^(a|b)/(a|b)(\w{4,4})$   /$2$3

#5


刚才放.htaccess里用PHP测了一下,应该可以.

#6


http://msdn.microsoft.com/zh-cn/library/ms972974.aspx#XSLTsection128121120120
 看这里,里面介绍很详细

#7


引用 4 楼 freewing 的回复:
试试这个:
RewriteRule ^(a|b)/(a|b)(\w{4,4})$   /$2$3


你这个是输入http://www.host.com/a/axxxx访问http://www.host.com/axxxx吧,
和我要的结果是相反的

#8


freewing:

受你的启发,我自己倒是把这个规则写出来了。
<IfModule mod_rewrite.c>
    RewriteEngine On
    #http://www.host.com/axxxx => http://www.host.com/a/axxxx
    RewriteRule ^(\w{1,1})(\w{4,4})/{0,1}$ /$1/$1$2 [QSA,L]
</IfModule>

现在又有另一个问题了,页面从http://www.host.com/axxxx 转到 http://www.host.com/a/axxxx后,浏览器的地址变成了http://www.host.com/a/axxxx,如何让浏览器中显示的地址不变呢,也就是还是显示为http://www.host.com/axxxx

#9


顺便学习。顶顶贴。

#10


学习了

#11


好久没有用php了

#12


学习学习

#13


引用 7 楼 zhongmao 的回复:
引用 4 楼 freewing 的回复:
试试这个: 
RewriteRule ^(a|b)/(a|b)(\w{4,4})$  /$2$3 
 

你这个是输入http://www.host.com/a/axxxx访问http://www.host.com/axxxx吧, 
和我要的结果是相反的


对比下楼顶的问题,貌似有点矛盾...


引用 8 楼 zhongmao 的回复:
freewing: 

受你的启发,我自己倒是把这个规则写出来了。 
<IfModule mod_rewrite.c> 
    RewriteEngine On 
    #http://www.host.com/axxxx => http://www.host.com/a/axxxx 
    RewriteRule ^(\w{1,1})(\w{4,4})/{0,1}$ /$1/$1$2 [QSA,L] 
</IfModule> 

现在又有另一个问题了,页面从http://www.host.com/axxxx 转到 http://www.host.com/a/axxxx后,浏览器的地址变成了http://www.host.com/a/axxxx,如何让浏览器中显示的地址不变呢,也就是还是显示为http://www.host.com/axxxx


更不明白楼主想干啥了...  楼主可以再仔细理解下“rewriter”

假如理解楼主的真实地址是http://www.host.com/a/axxxx 想让人通过http://www.host.com/axxxx来访问,那就看看我最早回答的。
假如理解楼主的真实地址是http://www.host.com/axxxx 想让人通过http://www.host.com/a/axxxx来访问,那就是你自己写的。