Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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
Mod rewrite 我的简单重写规则不起作用_Mod Rewrite_Url Rewriting - Fatal编程技术网

Mod rewrite 我的简单重写规则不起作用

Mod rewrite 我的简单重写规则不起作用,mod-rewrite,url-rewriting,Mod Rewrite,Url Rewriting,我想重写一下 RewriteRule ^(.*)/(.*)/$ index.php?r=contest&id=$1 到 以上是我提出的重写规则。起初我以为它会奏效,但显然不行。谁能告诉我这个错误吗 干杯您问题中的规则是在第一个正则表达式组中使用反向引用$1进行竞赛,而不是在第二个正则表达式组中使用1进行2美元的竞赛 您可以尝试以下方法: localhost/contest/1 或: 选项: 仅使用一个参数的规则应如下所示,假设它是动态字符串: RewriteRule ^([^/]+)

我想重写一下

RewriteRule ^(.*)/(.*)/$ index.php?r=contest&id=$1

以上是我提出的重写规则。起初我以为它会奏效,但显然不行。谁能告诉我这个错误吗


干杯

您问题中的规则是在第一个正则表达式组中使用反向引用$1进行
竞赛
,而不是在第二个正则表达式组中使用
1
进行2美元的竞赛

您可以尝试以下方法:

localhost/contest/1
或:

选项:

仅使用一个参数的规则应如下所示,假设它是动态字符串:

RewriteRule ^([^/]+)/([^/]+)/? index.php?r=$1&id=$2 [L,NC]
使用完整的规则集更新: 请求示例:
localhost/contest/1

RewriteRule ^([^/]+)/? index.php?r=$1 [L,NC]

这是一个非常好的文档

我更新了我的答案,解释了问题并做了一些修改。也许你想试一试。嗨,谢谢,现在它能用了!但是,我为localhost/index.php?r=contest重写的url将不再适用于localhost/contest。。如何使这两种类型的重写工作tgt?我不太明白。是否只想通过
竞赛
而不是2个参数?如果是,那么
contest
是固定字符串还是动态字符串?好的。我开始明白了。我将用1和2个参数的完整规则集修改我的答案。根据你的规则,我认为你已经知道了基本知识。Back引用是根据regex中的组位置进行编号的,除了获得整个CondPattern的$0。期权指令是强制性的。要记住的最重要的一点是,不管L标志是什么,规则都会被解析多次,因此有必要防止出现类似于规则之上的条件的循环。前2个条件确保提供现有文件和目录,并将其从以下规则中排除。
RewriteRule ^([^/]+)/([^/]+)/? index.php?r=$1&id=$2 [L,NC]
RewriteRule ^([^/]+)/? index.php?r=$1 [L,NC]
Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -f  [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . - [L]

# 2 parameters. Both dynamic.
RewriteCond %{REQUEST_URI} !index\.php   [NC]
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?r=$1&id=$2 [L,NC]

# 1 dynamic parameter.
RewriteCond %{REQUEST_URI} !index\.php   [NC]
RewriteRule ^([^/]+)/?$ index.php?r=$1   [L,NC]