配置htaccess以获取GET而不是目录

时间:2015-09-08 11:47:09

标签: regex apache .htaccess mod-rewrite

我的网址是这样的:

www.mydomain.com/index.php?param1=first&param2=second&param3=thirth

我想将其重写为:

www.mydomain.com/first/second/third

的.htaccess

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/([^/]+)$ index.php?param1=$1&param2=$2&param3=$3 [QSA,L]

问题是,我收到错误404(我认为服务器正在寻找目录/第一/第二/第三,而不是让root目录中的index.php从URL获取GET参数)。我错了吗?或者如何处理这个问题?

1 个答案:

答案 0 :(得分:1)

你的正则表达式实际上是不正确的。您在目标中使用了3个反向引用值,但只捕获了2个值。

您可以使用:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ index.php?param1=$1&param2=$2&param3=$3 [QSA,L]