Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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_Regex_Apache_.htaccess - Fatal编程技术网

Php 无基名称的htaccess重定向

Php 无基名称的htaccess重定向,php,regex,apache,.htaccess,Php,Regex,Apache,.htaccess,我正在使用htaccess处理一些URL,如下所示 B)https://www.example.com/online/development/id 规则: RewriteRule ^online/(.*)/(.*)$ filename.php?key=$2 [L] 但现在我想使用一些URL,如下所示:- https://www.example.com/development/id 我怎样才能做到这一点?您可以使用此规则- RewriteRule ^([\w-]+)/([\w-]+)$ fi

我正在使用htaccess处理一些URL,如下所示

B)https://www.example.com/online/development/id
规则:

RewriteRule ^online/(.*)/(.*)$ filename.php?key=$2 [L]
但现在我想使用一些URL,如下所示:-

https://www.example.com/development/id
我怎样才能做到这一点?

您可以使用此规则-

RewriteRule ^([\w-]+)/([\w-]+)$ filename.php?key=$2 [QSA,L]
你可以使用这个规则-

RewriteRule ^([\w-]+)/([\w-]+)$ filename.php?key=$2 [QSA,L]
您的正则表达式匹配:

  • ^
    -开始输入(主机后的部分)
  • online/
    -文字字符序列
    online/
  • (.*)
    -任何0+字符,尽可能多,直到最后一个
  • /
    -斜杠
  • (.*)
    -第2组:任何零个或多个字符,直到
  • $
    -输入结束
因此,正则表达式在路径中可以有任意数量的子部分

如果需要限制子部分的数量,请使用基于否定字符类的正则表达式:

RewriteRule ^[^/]*/([^/]*)$ filename.php?key=$1 [L]
[^/]+
匹配1+个字符,而不是
/
。由于您没有使用组1,我建议删除第一组
,并在替换中使用
$1

现在,正则表达式匹配:

  • ^
    -开始输入
  • [^/]*
    -除
    /
    之外的零个或多个字符(
    [^…]
    称为否定字符类)
  • /
    -斜杠
  • ([^/]*)
    -第1组:见上文
  • $
    -输入结束
这意味着路径中只能有一个斜杠。

您的正则表达式匹配:

  • ^
    -开始输入(主机后的部分)
  • online/
    -文字字符序列
    online/
  • (.*)
    -任何0+字符,尽可能多,直到最后一个
  • /
    -斜杠
  • (.*)
    -第2组:任何零个或多个字符,直到
  • $
    -输入结束
因此,正则表达式在路径中可以有任意数量的子部分

如果需要限制子部分的数量,请使用基于否定字符类的正则表达式:

RewriteRule ^[^/]*/([^/]*)$ filename.php?key=$1 [L]
[^/]+
匹配1+个字符,而不是
/
。由于您没有使用组1,我建议删除第一组
,并在替换中使用
$1

现在,正则表达式匹配:

  • ^
    -开始输入
  • [^/]*
    -除
    /
    之外的零个或多个字符(
    [^…]
    称为否定字符类)
  • /
    -斜杠
  • ([^/]*)
    -第1组:见上文
  • $
    -输入结束

这意味着路径中只能有一个斜杠。

尝试
^([^/]*)/([^/]*)$
请记住,在您的解决方案中,开发是一个动态词,我需要在哪里放置代码的基本文件(file.php)是什么?应该用我的正则表达式替换的只是您的正则表达式:
RewriteRule^([^/]*)/([^/]*)$filename.php?key=$2[L]
[^/]+
匹配除
/
之外的1+字符。尝试
^([^/]*)/([^/]*)$
请记住,在您的解决方案中,开发是一个动态字,我需要在其中放置代码的基本文件(file.php)是什么?应该用我的正则表达式替换的只是您的正则表达式:
RewriteRule^([^/]*)/([^/]*)/)$filename.php?key=$2[L]
[^/]+
匹配1+个字符,而不是
/
。这里[\w-]+有什么用,请解释一下对不起,我找不到你,如果要解释的话,我们只匹配了两个匹配组,没有在线url,然后将第二个匹配组结果附加到你的文件中。我只是要求使用\w-在正则表达式中匹配字符范围{A-Za-z0-9}规则中有-。我们可以在url中使用特殊字符,如a、è等吗?这里[\w-]+有什么用,请解释抱歉,我找不到你,如果要解释的话,我们只匹配了两个匹配组,而没有在url中联机,然后将第二个匹配组结果附加到您的文件中。我只是要求在规则中使用\w-in-regex匹配字符范围{A-Za-z0-9}与-匹配。我们可以在url中使用特殊字符,如A、è等吗?