Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 重写URL规则_Php_.htaccess - Fatal编程技术网

Php 重写URL规则

Php 重写URL规则,php,.htaccess,Php,.htaccess,我接受的URL如下所示: http://www.random.com/film/1 我需要做的是将它发送到基本目录中的server.php,然后分解/上的地址,并使用film和1作为变量 我如何做到这一点 目前,该链接表示没有页面存在 对于这种重定向,您应该查看.htaccess文件,而不是与其他列表完全重复: 在.htaccess文件中: RewriteEngine On RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILE

我接受的URL如下所示:

http://www.random.com/film/1
我需要做的是将它发送到基本目录中的
server.php
,然后分解
/
上的地址,并使用film和1作为变量

我如何做到这一点


目前,该链接表示没有页面存在

对于这种重定向,您应该查看
.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";
}

对于这种重定向,您应该查看
.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";
}

因为我已经打开了它,所以为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>
第四个参数(在本例中为
1
)是可选的,省略它并使用
/api-v1/v1/film
/api-v1/v1/film/
将为您提供:

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

因为我已经打开了它,所以为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>
第四个参数(在本例中为
1
)是可选的,省略它并使用
/api-v1/v1/film
/api-v1/v1/film/
将为您提供:

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


与PHP无关;取决于您的服务器。如果您使用Apache,请查看
.htaccess
文件。类似的问题在这个网站上曾经被问过很多次。好吧,这和服务器有关,但我不知道从哪里开始!你提到的那个复制品并不能解释我想要什么。当我输入上面的URL时,如何通过转到server.php解析它,然后让film和1可用?我只需要两个参数。另一个问题只使用1?与PHP无关;取决于您的服务器。如果您使用Apache,请查看
.htaccess
文件。类似的问题在这个网站上曾经被问过很多次。好吧,这和服务器有关,但我不知道从哪里开始!你提到的那个复制品并不能解释我想要什么。当我输入上面的URL时,如何通过转到server.php解析它,然后让film和1可用?我只需要两个参数。另一个问题只使用1?非常感谢!还有一件事,如果我没有第二个参数呢。第二部分是可选的!刚刚做了一个编辑,但是使用编辑,
opt
将包含斜杠,因此您可以使用PHP中的
substr($\u GET['opt',1)
删除它^。我需要前两个总是设置和第三个是可选的。你能最后一次为我修改一下解决方案吗!工作正常,但它给了我以下错误,请求的URL/api-v1/v1/film/在此服务器上找不到,如果号码不在末尾。如果你在末尾加上一个1,它可以工作,但我需要它在末尾没有数字的情况下工作!我在这里遇到的最有帮助的用户!他回答了答案,改变了答案,又回答了一遍,然后又回答了一遍!令人惊叹的!非常感谢你!谢谢!还有一件事,如果我没有第二个参数呢。第二部分是可选的!刚刚做了一个编辑,但是使用编辑,
opt
将包含斜杠,因此您可以使用PHP中的
substr($\u GET['opt',1)
删除它^。我需要前两个总是设置和第三个是可选的。你能最后一次为我修改一下解决方案吗!工作正常,但它给了我以下错误,请求的URL/api-v1/v1/film/在此服务器上找不到,如果号码不在末尾。如果你在末尾加上一个1,它可以工作,但我需要它在末尾没有数字的情况下工作!我在这里遇到的最有帮助的用户!他回答了答案,改变了答案,又回答了一遍,然后又回答了一遍!令人惊叹的!非常感谢你!在这个版本中需要注意的是,
文件
不容易获得,但是在这种情况下,
$\u GET['file']=1
,因此如果将URL中的
文件
更改为'stuff',PHP需要
$\u GET['stuff']
才能获得
1
^^对。事实上,既然“值”是可选的,那么您的解决方案@Jon很可能会更适合您。我的解决方案现在将重定向到
server.php?film=1
server.php?film
,这样您就可以轻松地测试php.Hrm中是否没有值,我会将第二条规则修改为
variable=value
type,而不仅仅是设置这样的变量容易改变。无论如何,在这种情况下,您的解决方案仍将运行得更好。。。更具可扩展性。应该注意的是,在这个版本中,
文件
并不容易获得,而是在这种情况下,
$\u GET['file']=1
,因此如果您将URL中的
文件
更改为'stuff',PHP需要
$\u GET['stuff']
才能获得
1
^^对。事实上,既然“值”是可选的,那么您的解决方案@Jon很可能会更适合您。我的解决方案现在将重定向到
server.php?film=1
server.php?film
,这样您就可以轻松地测试php.Hrm中是否没有值,我会将第二条规则修改为
variable=value
type,而不仅仅是设置这样的变量容易改变。无论如何,在这种情况下,您的解决方案仍将运行得更好。。。更具可扩展性。