重写规则将php查询字符串转换为html

时间:2017-09-01 12:00:11

标签: .htaccess mod-rewrite url-rewriting

请帮助我编写正确的.htaccess代码以获得想要的结果。

我有以下几页:

www.mydomain.com/?exam=/hp-certification/

www.mydomain.com/?exam=/cisco-certification /

www.mydomain.com/?exam=/oracle-exam-prep /

www.mydomain.com/?exam=/faq /

www.mydomain.com/?exam=/support /

还有更多页面,但您可以注意到固定部分是:www.mydomain.com/?expam =

我希望以下链接可以像上面一样工作,而不是使用查询字符串链接:

www.mydomain.com/hp-certification /

www.mydomain.com/cisco-certification /

www.mydomain.com/oracle-exam-prep /

www.mydomain.com/faq /

www.mydomain.com/support /

等等。

2 个答案:

答案 0 :(得分:1)

您的链接应该与此www.mydomain.com/?exam=hp-certification/类似,并且重写规则在.htaccess文件中会这样。

RewriteEngine On
RewriteRule ^([^/.]+)$ /?exam=$1 [L]

答案 1 :(得分:0)

您可以使用<!DOCTYPE html > <html> <head> <title></title> <link rel="shortcut icon" type="image/x-icon" href="favicon.ico" /> </head> <body> <header> <img src="http://via.placeholder.com/300x100" id = "logo" alt = "Antomatik logo"/> </header> <div id = "menu"> <ul> <li class="onama"> <a href="antomatik/onama.html">O nama</a></li> <li class="povijest"> <a href="antomatik/povijest.html">Povijest</a></li> <li class="kontakt"> <a href="antomatik/kontakt.html">Kontakt</a></li> </ul> </div> <footer> </footer> </body> </html>文件中的以下规则来执行此操作:

.htaccess

那么上面做了什么?

首先,它将查询RewriteEngine On RewriteCond %{QUERY_STRING} exam=(.+) [NC] RewriteRule ^(.*)$ http://www.example.com/%1? [R=301,NC,L] 作为条件,如果满足此条件,则它将使用exam=获取变量的任何版本。

然后,它将使用301重定向重写URL以显示(.+)。使用http://www.example.com/anything/是从%1获取变量,然后我们使用exam=来阻止原始查询字符串出现在新重写的URL的末尾。

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