2015-12-21 102 views
0

我已經在我的服務器的根目錄中搜索了使用.htaccess文件重寫URL的其他解決方案,但該語言對我來說非常混亂,我似乎無法使其工作。我怎麼會去改變:重寫PHP查詢字符串?

http://domain.com/share.php?media=059ogbuq70 

到:

http://domain.com/059ogbuq70 

我發現類似這樣的代碼,並嘗試過,但它似乎沒有工作:

RewriteEngine on 
RewriteCond %{QUERY_STRING} ^media=([0-9]+)$ 
RewriteRule ^$ share.php?media=$1 [QSA,L] 

我的PHP:

<?php 
$media_id = $_GET['media']; 
$url = file_get_contents("https://api.wistia.com/v1/medias/" . $media_id . ".json?api_password=my_key"); 
$json = json_decode($url, true); 
$name = $json[name]; 
$origimg = $json['thumbnail'][url]; 
list($image, $size) = explode('?', $origimg); 
$video = $json['assets'][5][url]; 
?> 

我然後echo我需要他們在我的頁面上的變量。

謝謝!

+0

我很困惑。您可以重寫URL以包含查詢字符串,但前提是查詢字符串存在。你想從第一個URL重定向到第二個URL嗎? – showdev

+0

基本上我想漂亮的網址只顯示給用戶,而真正的網址是什麼使用的服務器/ php – user1661677

+0

你是否也想重定向「醜陋的」URL到相應的「漂亮」的? – showdev

回答

1

要在內部重寫「漂亮」的網址,以便查詢字符串傳遞給PHP,我提出以下建議.htaccess文件:

RewriteEngine on 
RewriteRule ^([^/]+)/?$ share.php?media=$1 [L] 

正則表達式匹配:
一個或多個字符不是一個反斜槓,可選地後跟一個反斜槓。

$1中捕獲除可選尾部斜線之外的所有內容,並重寫爲「媒體」查詢字符串變量。

例如:

http://domain.com/059ogbuq70/
重寫內部到
http://domain.com/share.php?media=059ogbuq70

這意味着:

$_GET['media'] = 059ogbuq70


你可能會發現這個mod_rewrite cheat sheet有助於建立你的正則表達式。
另外,您可以在此處test your rewrites

+0

謝謝你的回答,但是這個不是重寫該URL,這是干擾我的PHP(從URI參數'媒體='獲取變量)。 – user1661677

+0

也許還有其他事情正在發生,或者我不明白你的目標是什麼。重寫是內部的,所以你不會在瀏覽器中看到URL更改(重定向)。它似乎在[這裏]工作(http://htaccess.mwl.be/)。這可能有助於編輯您的PHP代碼到您的問題。 – showdev

+0

我糾正了,輸入一個URL:'domain.com/ [some-string]'似乎工作得很好,但我在調用PHP的第3行上的$ media_id變量時遇到了問題。它在URL重寫之前工作得很好,並且它在我刪除'.htaccess'時有效。 – user1661677

0

您需要two規則來處理您要做的事情。你可以把它放在文件.htaccess

RewriteEngine on 

#redirect all old URLs to the new rewritten URL 
RewriteCond %{THE_REQUEST} ^GET\ /+share\.php\?media=([^&\ ]+) 
RewriteRule^/%1? [R=302,L] 

#rewrite folder path internally to share.php 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/?$ share.php?media=$1 [QSA,L] 
+0

感謝您的回答,但是這個重定向到:'http:// vipheo.com/fs6e/vipheo/public/83s371n1yi%20HTTP/1.0'並且給了我一個404.任何幫助? – user1661677

+0

@ user1661677對不起,我糾正了規則。小錯誤。現在整個規則已經完成。如果您沒有這樣的規則,用戶仍然可以使用'http://example.com/share.php?media=13e43'樣式的URL。 –