2013-04-14 253 views
0

我接受一個URL,如下列:重寫URL規則

http://www.random.com/film/1 

我需要這個做的是將其發送到server.php在基本目錄,然後/爆炸的地址,並使用該薄膜和1作爲變量。

我該如何做到這一點?

目前,該鏈接表示不存在頁面!

+4

與PHP無關;取決於你的服務器。如果您使用Apache,請查看'.htaccess'文件。過去在這個網站上已經提出了很多類似的問題。 – Dave

+0

好吧,這是關於服務器,但我不知道哪裏可以開始! – sark9012

+0

你提到的重複沒有解釋它我想如何。當我輸入上面的URL時,如何通過轉到server.php來解決它,然後讓電影和1可用?我只需要2個參數。那另一個問題只使用1? – sark9012

回答

3

因爲我已經打開了,請爲apache創建一個.htaccess文件,如下所示:

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} -s [OR] 
    RewriteCond %{REQUEST_FILENAME} -l [OR] 
    RewriteCond %{REQUEST_FILENAME} -d 
    RewriteRule ^.*$ - [NC,L] 
    RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?(.*)$ server.php?1=$1&2=$2&3=$3&4=$4 [NC,QSA,L] 
</IfModule> 

從我的基礎上,意見第一個答案嚴重修改,所以總結一下,現在在這裏將可在PHP什麼: /api-v1/v1/film/1會給你以下$_GET

Array 
(
    [1] => api-v1 
    [2] => v1 
    [3] => film 
    [4] => 1 
) 

第四個參數在這種情況下1是可選的,忽略它並使用/api-v1/v1/film/api-v1/v1/film/會給你:

Array 
(
    [1] => api-v1 
    [2] => v1 
    [3] => film 
    [4] => 
) 
+0

非常感謝!還有一件事,如果我沒有第二個參數。第二部分是可選的! – sark9012

+0

剛做了一個編輯,雖然編輯,'opt'將包含斜槓,所以你可以刪除'substr($ _ GET ['opt'],1)'在PHP ^^ – Jon

+0

我非常抱歉但我需要三個參數,這是最終的。我需要第一個2始終設置,第三個是可選的。你能否最後一次爲我改變解決方案! – sark9012

2

你應該看.htaccess文件這種重定向,而不是其他物品的相當多的重複:

.htaccess文件:

RewriteEngine On 
RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^([^/]+)/([^/]+)$ server.php?$1=$2 [L] 
RewriteRule ^([^/]+)$ server.php?$1 [L] 

server.php

$parameterName = 'film'; 
$parameterValue = isset($_GET[$parameterName]) ? $_GET[$parameterName] : NULL; 

if (!is_null($parameterValue)) { 
    echo "Parameter found"; 
} else { 
    echo "Parameter not found"; 
} 
+0

在這種情況下,應該注意這個版本的'file'不會很容易獲得,而是'$ _GET ['file'] = 1',所以如果你把URL中的'file'改成'stuff', PHP需要'$ _GET ['stuff']'來獲得'1'。 ^^ – Jon

+0

是的。事實上,現在「價值」是可選的,你的解決方案@Jon最有可能更適合。 – Nerdwood

+0

我現在只是重定向到'server.php?film = 1'或'server.php?film',所以你可以很容易地在PHP中測試沒有價值。 – Nerdwood