2017-09-01 21 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的末尾。

請確保您清除緩存之前測試此。