8

我想用 htaccess 将 URL 重写为可读性更好的 URL,并在 PHP 中使用 $_GET 变量
我有时会使用子域,因此它必须使用和不使用。网址中不需要的变量也是如此。我在 URL 中最多使用 3 个变量

URLsub.mydomain.com/page/a/1/b/2/c/3应该指向sub.mydomain.com/page.php?a=1&b=2&c=3并且 urlsub.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 和/或设置一些选项吗?

提前致谢。

4

1 回答 1

8

使用时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/1sub.mydomain.com/page.php?a=1,第二行将重写sub.mydomain.com/a/1/b/2sub.mydomain.com/page.php?a=1&b=2,依此类推。

于 2012-11-23T08:41:42.760 回答