2017-09-01 86 views
0

请帮我写出正确的.htaccess代码来获得想要的结果。重写规则将php querystring转换为html

我有以下网页:

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/?exam=

而不是使用查询字符串的链接,我想下​​面的链接工作,因为上面的页面:

www.mydomain.com/hp-certification/

www.mydomain.com/cisco-certification/

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

WWW。 mydomain.com/faq/

www.mydomain.com/support/

等等。

+0

[如何创建一个最小,完整和可验证的示例](http://stackoverflow.com/help/mcve) –

回答

1

你的链接应该是这样的www.mydomain.com/?exam=hp-certification/和重写规则会喜欢这个在.htaccess文件。

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

抱歉,在将以上代码添加到htaccess文件中后,当我尝试访问http:// www.example.com/hp-certification/我收到以下错误Not Found 在此服务器上找不到请求的URL/hp-certification /。 此外,尝试使用ErrorDocument处理请求时遇到404未找到错误。 –

+0

'RewriteEngine On RewriteRule ^([^ /] *)\ $ /?exam = $ 1 [L]'试试这个。 另外请确保您的网络服务器(apache/nginx)mod_rewrite已启用并允许。您可以生成重写规则并在http://www.ipdistance.com/mod_rewrite.php中了解更多信息。 –

0

你可以通过在你的.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的末尾。

请确保您清除缓存之前测试此。