2014-10-07 68 views
0

我有大量的內容存儲在MySQL數據庫中,這爲我的應用程序提供了動力。我想在網上提供這些信息,爲非應用用戶提供內容以及增加我的網站排名。生成靜態頁面 - 瞭解URL請求

該應用程序的後端運行在PHP/MySQL上。因此,我想用PHP來生成這些頁面(這是否是正確的方法?)。我猜PHP會採用url的結構,例如www.xxxx.com/viewer/**venue**/**id**,** **中的部分是可變的。我如何讓PHP根據這些請求來路由請求?

+1

URL重寫; [用PHP重寫URL](http://stackoverflow.com/questions/16388959/url-rewriting-with-php) – 2014-10-07 14:54:55

回答

1

也許最好和最有效的方法是在Apache中使用URL重寫。在你的根文件夾下面的代碼添加到您的.htaccess文件(或創建一個,如果不存在的話):

RewriteEngine On 
RewriteRule ^/viewer/([^/]+)/([^/]+)/?$ viewer.php?venue=$1&id=$2 [L] 

現在,創建一個viewer.php文件根內。然後,您可以訪問的變量作爲$_GET超級全局的部分內容如下:

$venue = $_GET['venue']; 
$id = $_GET['id']; 

提醒您,您應該在SQL代碼注入,並相應地消毒這些投入。

+0

太棒了!如果我將Apache mod應用到我當前的服務器,它仍然會正確地服務舊頁面(即我的舊index.php等),或所有請求現在都會通過viewer.php? – 2014-10-07 15:08:17

+0

不,RewriteRule只針對與你的模式匹配的任何URL(即'/ viewer /()/()')。 – BenM 2014-10-07 15:09:31

+0

最後一個問題,這是否使頁面可以通過搜索引擎抓取? – 2014-10-07 15:14:34

0

取決於您的網絡服務器。

如果你使用PHP5-FPM與Nginx的:

location /viewer { 
    fastcgi_pass unix:/var/run/php5-fpm.sock; 
    fastcgi_param SCRIPT_FILENAME /path/to/viewer.php; 
    include fastcgi_params; 
} 

可能會做到這一點。然後在PHP中,你需要在/ viewer之後分解$ _SERVER ['REQUEST_URI']路徑,並根據這個路徑運行你的邏輯。

實施例:

<? 
$parts = explode("/", $_SERVER['REQUEST_URI']); 
$i=0; 
while($parts[$i] != 'viewer'){ 
    unset($parts[$i]); 
    $i++; 
} 
if($parts[$i] == 'viewer') unset($parts[$i]); 
$parts = array_values($parts); 
var_dump($parts); 
?> 

您應該在/觀衆/(場地和1D)後看到所有的值的陣列。