.htaccess是否可以使用3个相同的参数到目前为止,



@anubhava@RavinderSingh13在理解.htaccess和重写规则方面给了我极大的帮助。然而,即使第一个规则(有一个参数:$id(和第二个规则(两个参数:$id$name。以下是我到目前为止的全部文件。我想补充一点,$class参数的格式为a-classb-class

RewriteEngine on
--1st rule with one parameter: $id--
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} id=([0-9]+) [NC]
RewriteRule ^file.php$ /directory/%1? [R=301,L,NC]
RewriteRule ^directory/(d+)/?$ /directory/file.php?id=$1 [L,QSA,NC]
--2nd rule with two parameters: $id and $name--
RewriteEngine on
RewriteCond %{THE_REQUEST} s/file.php?id=(d+)&name=(S+)s [NC]
RewriteRule ^ /directory/%1/%2? [R=301,L]
RewriteRule ^directory/(d+)/(.*)/?$ /directory/file.php?id=$1&name=$2 [NC,L,QSA]
--My attempt at the third rule following the example from the second, but this rule fails. Parameters are $id and $class--
RewriteEngine on
RewriteCond %{THE_REQUEST} s/file.php?id=(d+)&class=(S+)s [NC]
RewriteRule ^ /directory/%1/%2? [R=301,L]
RewriteRule ^directory/(d+)/(.*)/?$ /directory/file.php?id=$1&class=$2 [NC,L,QSA]

对于您显示的示例,并考虑到类单词将始终存在于您的第三个url中,请尝试以下规则。此外,您不需要多次将"重写引擎"写入ON,只需启动一次文件就足够了。

RewriteEngine on
##1st rule with one parameter: $id--
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} id=([0-9]+) [NC]
RewriteRule ^file.php$ /directory/%1? [R=301,L,NC]
RewriteRule ^directory/(d+)/?$ /directory/file.php?id=$1 [L,QSA,NC]
##Parameters are $id and $class
RewriteCond %{THE_REQUEST} s/file.php?id=(d+)&class=(w+-class)s [NC]
RewriteRule ^ /directory/%1/%2? [R=301,L]
RewriteRule ^directory/(d+)/(w+-class)/?$ /directory/file.php?id=$1&class=$2 [NC,L,QSA]

##Rule with two parameters: $id and $name--
RewriteCond %{THE_REQUEST} s/file.php?id=(d+)&name=(S+)s [NC]
RewriteRule ^ /directory/%1/%2? [R=301,L]
RewriteRule ^directory/(d+)/(.*)/?$ /directory/file.php?id=$1&name=$2 [NC,L,QSA]

相关内容

最新更新