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]