2017-08-09 109 views
0

我構建了一個縮短長鏈接的腳本。一切正常,只是當我訪問縮短的鏈接,我得到正則表達式.Htaccess重定向

錯誤"Not Found The requested URL /ESrdhPNLMV was not found on this server."

縮短網址有http://example.com/ESrdhPNLMV格式。 「ESrdhPNLMV」部分作爲標題存儲在數據庫中,作爲長url的標題。

當前的.htaccess規則

RewriteEngine on 
RewriteRule ^([^\/]+)\/?\/example.com\/?title=$1 [L,QSA] 

我從別人的代碼,並與regex101.com修改,並結束了與上面的代碼。 請問當我訪問短鏈接時,重定向到數據庫中存儲的url的正確方法是什麼?

下面是從數據庫中獲取URL代碼:

 if(isset($_GET['title'])){ 
     //select link from database 
    $result = $db->prepare("SELECT * FROM links WHERE title =?"); 
    $result->bind_param("s",$_GET['title']); 
    $result->execute(); 
    $goto = $result->get_result()->fetch_array(); 
    $g = $goto[1]; 
    header("Location: $g"); } 

ERROR LOG ON:

$goto = $result->get_result()->fetch_array(); 

即:

PHP Fatal error: Call to undefined method mysqli_stmt::get_result() in 

看到上面的錯誤有一個lin到mysqlnd驅動程序,我用phpinfo()檢查並發現驅動程序已啓用。所以我在這裏做錯了什麼?

更新: 現在我已經能夠解決該錯誤消息。和去

http://example.com/?title=ESrdhPNLMV 

現在打開相同http://example.com/?title=ESrdhPNLMV

+0

是否通過'http://example.com/標題= ESrdhPNLMV'工作從瀏覽器? – anubhava

+0

不,我得到了; example.com目前無法處理此請求。 HTTP錯誤500 –

+0

重命名你的.htaccess並重新測試該URL – anubhava

回答

0

你需要把規則改成這樣:

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([\w-]+)/?$ /?title=$1 [L,QSA]