我正在尝试通过.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文件方面是新手,我一直无法理解。
答案 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