2012-05-27 52 views
0

我想为我的网站搜索引擎优化排序,但我似乎无法弄清楚这种情况。不同的htaccess mod_rewrite

我想有4个查询参数,$cat$subcat$page$othervars

,但我需要一个htaccess的规则,以允许这些值:

  1. domain.com/cat/page
  2. domain.com/cat/subcat/page
  3. domain.com/cat
  4. domain.com/cat/subcat/page/other

我怎样才能做到这一点,到目前为止,所有我是这样的:

RewriteEngine On 
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)$ /beta/index.php?cat=$1&cat2=$2&page=$3&var=$4 [L] 

回答

1
RewriteEngine On 
RewriteRule ^([^/]+)/?$ /beta/index.php?cat=$1 [L] 
RewriteRule ^([^/]+)/([^/]+)/?$ /beta/index.php?cat=$1&page=$2 [L] 
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ /beta/index.php?cat=$1&cat2=$2&page=$3 [L] 
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /beta/index.php?cat=$1&cat2=$2&page=$3&var=$4 [L] 
+1

这正是我已经发布的答案;-) – Christopher

+0

@ChristopherBrix它不一样,你发布重定向,Hampus发布了实际的重写规则。 Hampus似乎都在努力工作,我希望它能成为:)谢谢你的包! –

+0

@ChristopherBrix是的,对不起。至少几乎一样 - 我会给你的积分,如果我可以... –

1

执行解析PHP中,而不是!

的.htaccess:

RewriteEngine On 
RewriteRule ^(.*)$ /beta/index.php?var=$1 [L] 

...在index.php文件

$vars = explode("/",$_GET['var']); 
$cat = isset($vars[0]) ? $vars[0] : false; 
$subcat = isset($vars[1]) ? $vars[1] : false; 
$page = isset($vars[2]) ? $vars[2] : false; 
$othervars = isset($vars[3]) ? $vars[3] : false; 
+0

谢谢,这可能是一种解决方法,如果有人公开,我会留下问题这是另一种解决方法。 –

0

我认为这将是更好的使用这些4周的RewriteRules:

RewriteEngine On 
RewriteRule ^([^/]+)/?$ /beta/index.php?cat=$1 [L,R=301] 
RewriteRule ^([^/]+)/([^/]+)/?$ /beta/index.php?cat=$1&page=$2 [L,R=301] 
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ /beta/index.php?cat=$1&cat2=$2&page=$3 [L,R=301] 
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ /beta/index.php?cat=$1&cat2=$2&page=$3&var=$4 [L,R=301] 
+0

对不起,但这不起作用,它重定向而不是重写。 –