2012-03-17 79 views
0

嗨扩大从澳大利亚中部,谢谢你们的帮助简单重写规则与锚

我有一个简单的重新编写这样

RewriteEngine on 
RewriteRule Trades-Services-(.*) Trades-Services.php?cat=$1 [L,NC] 

这样做是变成这样

网址
http://website.com/Trades-Services-Plumber 

这个

http://website.com/Trades-Services.php?cat=Plumber 

我希望的是进一步(或赞美),其重写规则,以便它会变成这个

http://website.com/Trades-Services-Plumber-123 

这个

http://website.com/Trades-Services.php?cat=Plumber&ad=123#123 
  • 如果它抛出一个锚,以及(#123 )
  • 123可以是任何数字并始终与锚
  • 相同,同时仍保留第一功能
  • 它也可以与像民间礼,而不是一个管道工工作URL

http://website.com/Trades-Services-Civil-Celebrant-123 
to 
http://website.com/Trades-Services.php?cat=Civil-Celebrant&ad=123#123 

三江源

回答

1

来做大量的改写,你需要改变现有的规则并添加额外的一个处理第二种情况:

RewriteEngine on 
RewriteRule ^Trades-Services-(.+)-([0-9]+)$ /Trades-Services.php?cat=$1&ad=$2 [L,NC] 
RewriteRule ^Trades-Services-(.+)$ /Trades-Services.php?cat=$1 [L,NC] 

这应该足以支付4所要求3,除了用于第一:

凡抛出上的锚定以及(#123)

的URL片段,所述#123位,是由浏览器处理并且在网址具有#名称,#name片段永远不会发送到服务器。所以服务器无法知道这个片段,这是浏览器看到的东西,浏览器寻找到文档中的锚点。你可以做的是重定向获得锚。然后第一个规则是这样的:

RewriteRule ^Trades-Services-(.+)-([0-9]+)$ /Trades-Services.php?cat=$1&ad=$2#$2 [L,NC,R] 

然而,当有人进入他们的浏览器地址栏中http://website.com/Trades-Services-Plumber-123,该规则将浏览器重定向到http://website.com/Trades-Services.php?cat=Plumber & ad = 123#123,因此浏览器地址栏中的内容变成了php的URI。这与您的原始规则(在服务器端进行内部重定向,保留浏览器地址栏中的内容)中的行为不同。你可以做的另一件事是当你生成链接如http://website.com/Trades-Services-Plumber-123,确保有一个片段添加到它:http:// website。com/Trades-Services-Plumber-123#123

+0

好的答案男人! – LazyOne 2012-03-17 21:42:34