2013-04-14 215 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