2010-06-11 39 views
2

对于正则表达式,我是一个完整的n00b。我需要这些重定向:使用多个查询字符串进行Mod重写

(1)

www.mysite.com/bike.php?id=001&product=Product-Name&source=Source-Name 
should become -> www.mysite.com/Source-Name/001-Product-Name 

(2)

www.mysite.com/car.php?id=002&product=Product-Name&source=Source-Name 
should become -> www.mysite.com/Source-Name/002-Product-Name 

(3)

www.mysite.com/moto.php?id=005&product=Product-Name&source=Source-Name 
should become -> www.mysite.com/Source-Name/005-Product-Name 

(4)

www.mysite.com/stores.php?id=002&name=Store-Name 
should become -> www.mysite.com/002-Store-Name 

编辑:我应该澄清,有3个产品页面,这都应该重定向到相同格式的URL

任何帮助非常感谢:)

+1

你确定你不需要他们吗?大多数人都会。 – 2010-06-11 07:03:14

+0

这次你很幸运,但主要是在互联网上提问时,你不能指望其他人做你的工作。其他人愿意帮助你,如果你表明你已经付出了一些努力来解决这个问题,它会有所帮助。就你而言,你可以向我们展示你提出的RewriteRule。即使这是完全错误的,你已经表明你自己尝试过。 – Sjoerd 2010-06-11 07:31:06

+0

@Iganacio - 嘿,你说得对。这就是为什么正则表达式没有工作。再次,小白:p 感谢您的澄清 – Boris 2010-06-11 07:44:52

回答

1
RewriteCond %{REQUEST_URI} www.mysite.com/(.+)/(\d+)-(.+) /products.php?id=$2&product=$3&source=$1 

RewriteCond %{REQUEST_URI} www.mysite.com/(\d+)-(.+) /products.php?id=$1&name=$2 

我认为它工作的很好;)

1
RewriteEngine On 
RewriteRule ^(\d+)-(.+)$ /stores.php?id=$1&name=$2 [L] 
RewriteRule ^(.+)/(\d+)-(.+)$ /products.php?id=$2&product=$3&source=$1 [L] 
+0

对不起,我将如何颠倒这些规则?感谢:) – Boris 2010-06-11 08:05:15

+0

你的意思是说用户应该输入并看到这个长而丑陋的URL,它必须在短而干净的URL中悄悄转换?这与每个人所做的完全相反:给出一个可见的“漂亮”URL并让服务器处理引擎盖下的脏东西。 – 2010-06-11 08:14:47

+0

例如。浏览器会在网址列中显示“http://mysite.com/Source-Name/001-Product-Name”,但实际页面是从http://mysite.com/bike.php?id=001&product=产品名称和来源=来源名称 – Boris 2010-06-11 08:33:35