htaccess mod用斜杠重写$ _GET到变量

时间:2012-11-22 13:26:46

标签: .htaccess mod-rewrite url-rewriting get subdomain

我想用htaccess重写URL以获得更好的可读URL并在PHP中使用$ _GET变量
我有时会使用子域,因此必须使用和不使用子域。也是url中不需要的变量。我在URL

中最多使用3个变量

网址sub.mydomain.com/page/a/1/b/2/c/3应该导致sub.mydomain.com/page.php?a=1&b=2&c=3,网址sub.mydomain.com/a/1/b/2/c/3应该导致sub.mydomain.com/index.php?a=1&b=2&c=3 $_GET['a'] = 1

我在搜索并尝试了很多之后想出了这个

RewriteEngine on
RewriteRule ([^/]+)\.domain.com/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ $1.domain.com/$2.php?$3=$4&$5=$6&$7=$8 [QSA,NC]  
RewriteRule ([^/]+)\.domain.com/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ $1.domain.com/index.php?$2=$3&$4=$5&$6=$7 [QSA,NC]  
RewriteRule ([^/]+)\.domain.com/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ $1.domain.com/$2.php?$3=$4&$5=$6 [QSA,NC]  
RewriteRule ([^/]+)\.domain.com/([^/]+)/([^/]+)/([^/]+)/([^/]+)$ $1.domain.com/index.php?$2=$3&$4=$5 [QSA,NC]  
RewriteRule ([^/]+)\.domain.com/([^/]+)/([^/]+)/([^/]+)$ $1.domain.com/$2.php?$3=$4 [QSA,NC]  
RewriteRule ([^/]+)\.domain.com/([^/]+)/([^/]+)$ $1.domain.com/index.php?$2=$3 [QSA,NC]  
RewriteRule ([^/]+)\.domain.com/([^/]+)$ $1.domain.com/$2.php [L,QSA,NC]  

但我得到的是未找到的服务器错误

我对此并不擅长,所以也许我会监督一些事情 此外,我希望它能够在最后使用和不使用斜杠

我应该使用RewriteCond和/或设置一些选项吗?

提前致谢。

1 个答案:

答案 0 :(得分:7)

使用RewriteRule时,您不会在该行中包含域名。另外,请确保先打开RewriteEngine。像这样:

RewriteEngine On
RewriteRule ^([^/]+)/([^/]+)$  index.php?$1=$2
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)$  index.php?$1=$2&$3=$4
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)$  index.php?$1=$2&$3=$4&$5=$6

第一行会将sub.mydomain.com/a/1重写为sub.mydomain.com/page.php?a=1,第二行会将sub.mydomain.com/a/1/b/2重写为sub.mydomain.com/page.php?a=1&b=2,依此类推。