Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.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/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 htaccess问题与一般正则表达式_Php_.htaccess_Mod Rewrite - Fatal编程技术网

Php htaccess问题与一般正则表达式

Php htaccess问题与一般正则表达式,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,我的htaccess重写有问题 电话是: RewriteRule ^sports/([^/\]+)/?([^/\]+)/?([^/\.]+)/?$ index.php?v=sports&title=$1&go=$2&d=$3 [L] 对于此url:http://localhost/host/sports/other/->这将导致: ***object(url)[3] public 'v' => string 'sports' (length=6) publ

我的htaccess重写有问题

电话是:

RewriteRule ^sports/([^/\]+)/?([^/\]+)/?([^/\.]+)/?$ index.php?v=sports&title=$1&go=$2&d=$3 [L]
对于此url:
http://localhost/host/sports/other/
->这将导致:

***object(url)[3]
  public 'v' => string 'sports' (length=6)
  public 'title' => string 'other' (length=5)*** ( these are the var_dump of Gets);
到目前为止,对于此url,一切正常,但对于此url: 结果是:404找不到,我必须修改正则表达式并添加一个“.”,因此:

RewriteRule ^sports/([^/\]+)/?([^/\.]+)/?([^/\.]+)/?$ index.php?v=sports&title=$1&go=$2&d=$3 [L]
那就好了。但如果我保留该点,并检查旧url(仅包含2个文件夹),则会产生以下结果:

object(url)[3]
  public 'v' => string 'sports' (length=6)
  public 'title' => string 'basebal' (length=7)
  public 'go' => string 'l' (length=1)
如果您看到的链接是:
/sports/baseball/l
而不是
/sports/baseball
,则查询中缺少1个字母,请帮助! 谢谢:)


我在两个案例中添加了两行代码后,它运行良好:

RewriteRule ^sports/([^/\]+)/?([^/\.]+)/?$ index.php?v=sports&title=$1 [L]
RewriteRule ^sports/([^/\]+)/?([^/\.]+)/?([^/\.]+)/?$ index.php?v=sports&title=$1&go=$2&d=$3 [L]

但我不认为这是正确的方式,这意味着如果我想要另一个级别,我必须添加另一行…哼

在你的情况下,我想我会使用这个:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^sport/(.*?)/(.*?)/(.*?)/$ test.php?v=sport&a=$1&b=$2&c=$3
但通常我更喜欢

RewriteRule (.*) index.php?get=$1
然后用
php


在您的代码中,您很少犯错误,例如
[^/\]+
。。。。通常情况下,你必须用前面提到的向后斜杠来避免向前斜杠

在本例中,
[^\/.]+
不需要点,因为
[^\/]
表达式匹配除正斜杠以外的任何内容


您不需要
/?
(可选的前斜杠),因为它们之间的文本不是可选的,您可能会得到整个url作为
$1
。。。。也许最后一个对你很有用,我想我会用这个:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^sport/(.*?)/(.*?)/(.*?)/$ test.php?v=sport&a=$1&b=$2&c=$3
但通常我更喜欢

RewriteRule (.*) index.php?get=$1
然后用
php


在您的代码中,您很少犯错误,例如
[^/\]+
。。。。通常情况下,你必须用前面提到的向后斜杠来避免向前斜杠

在本例中,
[^\/.]+
不需要点,因为
[^\/]
表达式匹配除正斜杠以外的任何内容


您不需要
/?
(可选的前斜杠),因为它们之间的文本不是可选的,您可能会得到整个url作为
$1
。。。。也许最后一个是有用的

你必须用反斜杠转义正斜杠,比如
[^\/]+
如果你想匹配一个真正的点,你也必须转义它,否则点匹配任何字符实际上字母不必是点,它可以是任何字母,那么第三级斜杠就可以了,如果我不添加这个,第三级斜杠会给我一个404错误。如果我添加任何字母(不必是dot(很抱歉)),第三级就可以了,如果我返回到第二级斜杠,比如“/sports/2ndlevel/”,那么第三级就可以使用(dot)了,它会给我一个找不到的页面,但会保留在我提取GET值的框架内,并看到查询是v=sports,title=2ndleve(注意缺少的l)(最后一个字母),go=l(缺少的l在这里)但是无论如何,也许这些表达式是错误的,有谁能给我一个正确的方法来添加这个mod_重写并使wit完美地工作吗?我需要的是:1-我有这个url:index.php?v=sports&title=title&go=3&sid=1 v是类别,标题是类别的标题,go是该类别中的文章,sid是该类别的页面因此它看起来像xxxxxxx/sports/basketball/bla_article/page_2/你必须用反斜杠来避开前斜杠,如
[^\/]+
如果你想匹配一个真实的点,你也必须将其转义,否则该点匹配任何字符。实际上,字母不必是点,它可以是任何字母,那么第三级斜杠就可以了,如果我不添加这个,第三级斜杠将给我一个404错误。如果我添加任何字母(不必是点(很抱歉))第三级可以使用(点),如果我返回到第二级斜杠,比如“/sports/2ndlevel/”,它会给我找不到的页面,但仍然在我提取GET值的框架内,并且看到查询是v=sports,title=2ndleve(注意缺少的l(最后一个字母)),go=l(缺少的l在这里)但是无论如何,也许这些表达式是错误的,有谁能给我一个正确的方法来添加这个mod_重写并使wit完美地工作吗?我需要的是:1-我有这个url:index.php?v=sports&title=title&go=3&sid=1 v是类别,标题是类别的标题,go是该类别中的文章,sid是该类别的页面因此它看起来像xxxxxxx/sports/basketball/bla_article/page_2/我考虑过用php解析url,但不确定这是否是一种好的技术,我喜欢遵循标准,但我看过的论坛中没有一个给我提供mod_rewrite的标准。我可以了解更多关于你使用的第2行和第3行吗?:)那是什么for@Emad检查url是文件(第二个)还是目录(第三个)。。。如果你有
sport/template/style/style.css
和一个可选的正斜杠,你将无法加载cssrewiterule^([^/\.]+)/?$index.php?v=$1[L]RewriteRule^([^/\.]+)/([^/\.]+)/?([^/\.]/?$index.php?v=$1&title=$2[L]RewriteRule^([^/\.]+)/)/(^/\.+)/)/(^/\.]?([^/\.]+)/?([^/\.]+)/?([^/\.]+)/?$index.php?v=$1&title=$2&go=$3&sid=$4[L]我考虑过在php中解析url,但不确定这是否是一种好的技术,我喜欢遵循标准,但我所看的论坛都没有给我修改的标准。我能了解更多关于你使用的第二行和第三行吗?:)那是什么for@Emad检查url是文件(第二个)还是目录(第三个)。。。如果你有
sport/template/style/style.css
和一个可选的正斜杠,你将无法加载cssrewiterule^([^/\.]+)/?$index.php?v=$1[L]RewriteRule^([^/\.]+)/([^/\.]+)/?([^/\.]/?$index.php?v=$1&title=$2[L]RewriteRule^([^/\.]+)/)/(^/\.+)/)/(^/\.]?([^/\.]+)/?([^/\.]+)/?([^/\.]+)/?$index.php?v=$1&title=$2&go=$3&sid=$4[L]