2014-11-06 60 views
0

我想重定向以它所具有的參數的帳戶上的同一詞開始的URL。只需看一下我的代碼。一個位置不同條件的三個重寫規則

RewriteEngine On 
RewriteRule ^products/([^/]+) /$1.php 
RewriteEngine On 
RewriteRule ^products/([^/]+)/([^/]+)/([^/]+) /$1.php?ref=$3 
RewriteEngine On 
RewriteRule ^products/([^/]+)/([^/]+)/([^/]+)/([^/]+) /$1.php?refsub=$4 

如果URL像/products/xyz我想這個被重定向到/xyz.php

如果URL像/products/xyz/abc/11我想這個被重定向到xyz.php?ref=11

如果URL像/products/xyz/abc/def/111我想這被重定向到xyz.php?refsub=111

我試着用代碼&它不工作。這有什麼缺陷?誰能幫忙?

+0

一開始,你只需要一個'RewriteEngine On'命令。一旦開啓,它就在 – Joe 2014-11-06 15:34:55

+0

好的,你可以分享一個解決方案嗎? – 2014-11-06 15:37:16

回答

1

我相信問題是所有的路線都與第一條路線相匹配,所以他們都會在那裏停下來。您可以逆序他們,讓他們有相匹配的最明確路由第一:

RewriteEngine On 
RewriteRule ^products/([^/]+)/([^/]+)/([^/]+)/([^/]+) /$1.php?refsub=$4 
RewriteRule ^products/([^/]+)/([^/]+)/([^/]+) /$1.php?ref=$3 
RewriteRule ^products/([^/]+) /$1.php 

或者你可以只添加結束URL標記:

RewriteEngine On 
RewriteRule ^products/([^/]+)/?$ /$1.php 
RewriteRule ^products/([^/]+)/([^/]+)/([^/]+)/?$ /$1.php?ref=$3 
RewriteRule ^products/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /$1.php?refsub=$4 
+0

完美的,愚蠢的錯誤。完成,非常感謝您的快速回復:) – 2014-11-06 15:41:53