2015-04-05 38 views
2

所以我想做一个mod_rewrite的在我的.htaccess文件,这样下浏览器请求:mod_rewrite的查询字符串参数为空

www.mysite.com/portal/v1/v2/v3 

...将被改写,并在PHP处理为这样:

www.mysite.com/portal.php?n1=v1&n2=v2&n3=v3 

这里需要说明的是,一些或所有这些GET变量可以是空白,这意味着浏览器请求可以采用以下任一形式:

www.mysite.com/portal/v1/v2/v3 
www.mysite.com/portal/v1/v2 
www.mysite.com/portal/v1 
www.mysite.com/portal 

我可以在php文件中对事物进行分类,但是我应该使用什么代码来处理.htaccess?谢谢!

回答

0

/.htaccess

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 

RewriteRule ^(.*)/(.*)/(.*)/?$ /portal.php?n1=$1&n2=$2&n3=$3 [QSA,L,NC] 

的RewriteCond试试这个保证,如果该请求已经是一个文件或目录重写规则将被跳过。

$1$2$3指的是在RewriteRule内匹配的模式。

0

您可以在DOCUMENT_ROOT/.htaccess文件中使用此代码:

RewriteEngine On 
RewriteBase/

RewriteCond %{REQUEST_FILENAME} -d [OR] 
RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule^- [L] 

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ portal.php?n1=$1&n2=$2&n3=$3 [QSA,L] 

RewriteRule ^([^/]+)/([^/]+)/?$ portal.php?n1=$1&n2=$2 [QSA,L] 

RewriteRule ^([^/]+)/?$ portal.php?n1=$1 [QSA,L] 

RewriteRule ^/?$ portal.php [L]