2015-03-18 39 views
0

好的,所以問題的標題可能看起來很模糊,所以這裏有一個完整的解釋。重寫URL在手動輸入時有效,但不會自動輸入

我的網站允許用戶輸入玩家用戶名並顯示該用戶名的信息。索引頁面的URL是

http://mcspy.info/

一旦用戶提交的用戶名,他們被帶到另一個網頁,它顯示的結果。 URL現在看起來像這樣

http://mcspy.info/php.php?username=_scrunch(_scrunch是一個用戶名)。現在

使用.htaccess文件重寫URL,一個URL可以現在這個樣子

http://mcspy.info/player/_scrunch

的問題是,上述工作正常,但網站不會使用/ player/Username生成網址。它改爲使用php.php?=用戶名。

我怎麼會去這樣做,這樣,當用戶提交一個用戶名,網址會自動顯示像/player/_scrunch代替php.php?=_scrunch

這是我的.htaccess文件

RewriteBase/

RewriteEngine On 

RewriteRule ^player/(.*)$ php.php?username=$1 [L] 

這裏是我的PHP。 PHP文件(只是PHP代碼)。

<?php 
//error_reporting(E_ALL & ~E_NOTICE); 
// Load the username from somewhere 
if (
$username = $_GET["username"] 
) { 
//do nothing 
} else { 
$username = "notch"; 
} 


//allow the user to change the skin 
$skinChange = "<a href='https://minecraft.net/profile/skin/remote?url=http://skins.minecraft.net/MinecraftSkins/$username.png' target='_blank' </a>"; 

//grabbing the users information 
if ($content = file_get_contents('https://api.mojang.com/users/profiles/minecraft/' . urlencode($username)) 
) { 
$userSkin3D = "<img src='https://mcapi.ca/skin/3d/$username' />"; 
$userSkin2D = "<img src='https://mcapi.ca/skin/2d/$username' />"; 
} else { 
$content = file_get_contents('https://api.mojang.com/users/profiles/minecraft/' . urlencode($username) . '?at=0'); 
if($http_response_header['0'] == "HTTP/1.1 204 No Content") { 
header ('Location: http://mcspy.info/php.php?username=notch'); 
} 
$json = json_decode($content); 

foreach ($json as $currentName) { 
$currentName = $currentName; 
} 

$userSkin3D = "<img src='https://mcapi.ca/skin/3d/$currentName' />"; 
$userSkin2D = "<img src='https://mcapi.ca/skin/2d/$currentName' />"; 
} 



// Decode it 
$json = json_decode($content); 

// Check for error 
if (!empty($json->error)) { 
die('An error happened: ' . $json->errorMessage); 
} 

// Save the uuid 
$uuid = $json->id; 

// Get the history (using $json->uuid) 
$content = file_get_contents('https://api.mojang.com/user/profiles/' . urlencode($uuid) . '/names'); 

// Decode it 
$json = json_decode($content); 

$names = array(); // Create a new array 

foreach ($json as $name) { 
$input = $name->name; 

if (!empty($name->changedToAt)) { 
    // Convert to YYYY-MM-DD HH:MM:SS format 
    $time = date('Y-m-d H:i:s', $name->changedToAt); 

    // $input .= ' (changed at ' . $time . ')'; 
} 

$names[] = $input; // Add each "name" value to our array "names" 

} 

//url to users 2D head (avatar) 
$usersAvatar = "https://mcapi.ca/avatar/2d/$input/55"; 

//user's Avatar as favivon 
$usersFavicon = "<link rel='shortcut icon' href='$usersAvatar' type='image/png' />"; 
//use $uuid tp grab UUID of the user - ---- - - - use $names to get name history of the user. 



?> 
+0

如果這是一個帶有'method =「get」'的表單,表單將始終將用戶發送到通過表單字段(如'key = value')指定的頁面。您需要在javascript中更改表單的操作以更改該操作,可能需要提交或使提交按鈕成爲標準按鈕,該按鈕只是調用更改操作的js腳本。除此之外,您還可以檢查'php.php'中的$ _SERVER ['REQUEST_URI']',如果它不是預期的格式,請重定向用戶。 – 2015-03-18 21:00:01

+0

嗯..好吧,我需要以任何方式改變我的PHP代碼?由於我不是最大的JavaScript,有沒有任何教程來告訴我如何做到這一點?甚至是一些示例代碼? – JLWillliamsUK 2015-03-18 21:03:25

+0

首先你需要回答一個問題:爲什麼你要使用重寫?如果你的表單以這種方式發送並且它有效,那麼你很好。但是,如果要添加錨點,則可以使用重寫格式。 – 2015-03-18 21:04:59

回答

1

嘗試添加你已經有RewriteRule上面這條規則:

RewriteCond %{THE_REQUEST} \ /+php\.php\?username=([^&\ ]+) 
RewriteRule^/player/%1? [L,R] 

,以請求定向到php.php文件重定向到清潔尋找URL。然後你的其他規則將在內部重寫它到php.php之一。

+0

Yeap。這很好用!非常感謝! – JLWillliamsUK 2015-03-18 21:25:11