.htaccess用参数重写url

时间:2017-09-01 15:36:05

标签: apache .htaccess mod-rewrite

我正在尝试通过.htaccess文件重写我的网址,以使它们看起来更干净。我有

http://localhost:801/Test/test.php?school=19&name=Greenhaven-Elementary

它需要最终看起来像

http://localhost:801/Test/test.php/19/Greenhaven-Elementary

在我的.htaccess文件中,我有以下

RewriteEngine On
RewriteRule ^([a-zA-Z0-9-/+]+)([0-9]+)$ test.php?school=/$1&name=$2/ [L]

我尝试了其他方法,但是在使用.htaccess文件方面是新手,我一直无法理解。

1 个答案:

答案 0 :(得分:1)

这应该做你想要的事情:

RewriteEngine On
RewriteCond %{QUERY_STRING} school=(.+)&name=(.+) [NC]
RewriteRule ^(.*)$ http://localhost:801/Test/test.php/%1/%2? [R=301,NC,L]

那么上面做了什么?

首先,它将查询school=name=作为条件,如果满足此条件,则它将使用(.+)获取任何版本的变量。

然后,它将使用301重定向重写URL以显示http://localhost:801/Test/test.php/anything/anything2%1%2的使用是从school= / name=获取变量,然后我们使用?来阻止原始查询字符串出现在新重写的URL的结尾。

确保在>测试之前清除缓存

修改

我为单数查询写了这个:

RewriteEngine On
RewriteCond %{QUERY_STRING} item=(.+) [NC]
RewriteRule ^(.*)$ http://localhost:801/Test/%1? [R=301,NC,L]

这包括删除test.php并在我的服务器上正常运行并返回http://localhost:801/Test/anything