Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.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 我如何解决这个访问问题_Php_.htaccess - Fatal编程技术网

Php 我如何解决这个访问问题

Php 我如何解决这个访问问题,php,.htaccess,Php,.htaccess,我有以下动态url http://www.mydomain.com/v/dynamicvaluehere 我的htaccess中有以下内容 RewriteRule ^v/(.*)$ script.php?name=$1 [NC,L] RewriteRule ^v/(.*)/Page-(.*)\.html$ script.php?name=$1&number=$2 [NC,L] 现在它工作得很好,我想进一步创造 http://www.mydomain.com/v/dynamicval

我有以下动态url

http://www.mydomain.com/v/dynamicvaluehere
我的htaccess中有以下内容

RewriteRule ^v/(.*)$ script.php?name=$1 [NC,L]
RewriteRule ^v/(.*)/Page-(.*)\.html$ script.php?name=$1&number=$2 [NC,L]
现在它工作得很好,我想进一步创造

http://www.mydomain.com/v/dynamicvaluehere/Page-dyanamicnumberhere.html
我的htaccess中有以下内容

RewriteRule ^v/(.*)$ script.php?name=$1 [NC,L]
RewriteRule ^v/(.*)/Page-(.*)\.html$ script.php?name=$1&number=$2 [NC,L]
但它不工作,请帮助。。。
还要注意,第二个指定的dynamicvalue元素与上面提到的相同,但只进一步包括dynamicnumber…

我认为问题可能是您使用了通配符。如果.htaccess如下所示:

RewriteRule ^v/(.*)$ script.php?name=$1 [NC,L]
RewriteRule ^v/(.*)/Page-(.*)\.html$ script.php?name=$1&number=$2 [NC,L]
RewriteRule ^v/([A-Za-z0-9].*)$ script.php?name=$1 [NC,L]
RewriteRule ^v/([A-Za-z0-9].*)/Page-([0-9].*)\.html$ script.php?name=$1&number=$2 [NC,L]
然后,任何模式都不会到达第二个参数,因为
(.*)/Page-(.*)\.html
实际上将位于
(.*)
第一个参数之下

您可以将通配符细化为以下内容:

RewriteRule ^v/(.*)$ script.php?name=$1 [NC,L]
RewriteRule ^v/(.*)/Page-(.*)\.html$ script.php?name=$1&number=$2 [NC,L]
RewriteRule ^v/([A-Za-z0-9].*)$ script.php?name=$1 [NC,L]
RewriteRule ^v/([A-Za-z0-9].*)/Page-([0-9].*)\.html$ script.php?name=$1&number=$2 [NC,L]
或者甚至可以尝试将陈述的顺序切换为:

RewriteRule ^v/(.*)/Page-(.*)\.html$ script.php?name=$1&number=$2 [NC,L]
RewriteRule ^v/(.*)$ script.php?name=$1 [NC,L]

你的第二条规则永远也达不到,因为第一条规则的贪婪本性。您可以将其置于第一条规则之上,也可以使第一条规则更加具体

请尝试以下操作:

RewriteRule ^v/(.+)/Page-(.+)\.html$ script.php?name=$1&number=$2 [NC,L]
RewriteRule ^v/(.*)$ script.php?name=$1 [NC,L]