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
Regex 简单mod_重写不起作用(传递两个变量)找不到答案_Regex_Mod Rewrite - Fatal编程技术网

Regex 简单mod_重写不起作用(传递两个变量)找不到答案

Regex 简单mod_重写不起作用(传递两个变量)找不到答案,regex,mod-rewrite,Regex,Mod Rewrite,我尝试了不同的在线工具和关于mod_rewrite的教程,但我找不到我想要的。我想重写这样的URL(我不包括站点域,因为它都在同一个站点目录中): 我只想让它找到斜杠(/area ID/)中的区域号和斜杠(/category ID/)中的类别,并忽略所有其他文本,因为它会根据页面标题进行更改。我试过: RewriteRule ^area-([-0-9]+)/([^/]*)/category-([-0-9]+)\/ test.php?id=$1&var=$2&cat_id=$

我尝试了不同的在线工具和关于mod_rewrite的教程,但我找不到我想要的。我想重写这样的URL(我不包括站点域,因为它都在同一个站点目录中):

我只想让它找到斜杠(
/area ID/
)中的区域号和斜杠(
/category ID/
)中的类别,并忽略所有其他文本,因为它会根据页面标题进行更改。我试过:

RewriteRule ^area-([-0-9]+)/([^/]*)/category-([-0-9]+)\/    test.php?id=$1&var=$2&cat_id=$3 [L]

<代码> $var=2 < /Cord>是空的,不需要,但需要添加一些东西来忽略中间的随机数据,以便可以删除部分。页面实际上加载时没有错误,但它不会调出category ID值。请帮助,谢谢。

这应该可以解决问题:删除
\

RewriteRule ^area-([0-9-]+)/([^/]*)/category-([0-9-]+)/.*$    test.php?id=$1&var=$2&cat_id=$3 [L]
此外,您可以通过执行以下操作忽略中间部分:

RewriteRule ^area-([0-9-]+)/[^/]*/category-([0-9-]+)/.*$    test.php?id=$1&cat_id=$2 [L]
换句话说,只要去掉括号,它就不会作为一个组进行匹配;它将被忽略

根据下面的评论进行编辑:子目录非常重要。以下完整的.htaccess文件适合我。您需要将它放在子目录中(
目录
在下面的注释中的示例中)。在我的例子中,它是
所以
+
这个问题编号
=
so20604099

<IfModule mod_rewrite.c>
RewriteEngine On
# Change the lines below to match your real subdirectory name...
RewriteBase /so20604099/
RewriteRule ^location-([0-9-]+)/[^/]*/category-([0-9-]+)/.*$    test.php?id=$1&cat_id=$2 [L]
</IfModule>
在这种情况下,如果我转到
http://myserver/so20604099/location-156/daytona-beach/category-53/foobar
,输出为:

array (size=2)
    'id' => string '156' (length=3)
    'cat_id' => string '53' (length=2)

谢谢你的回复,但是如果我测试它并在页面上使用$\u GET['cat\u id',这是一个空结果吗?我用了你的第二个密码。我做了一个打印($\u GET),只得到了id值:Array([id]=>156)你有
RewriteBase
吗?如果是,是什么?此外,此.htaccess文件是否在子文件夹中?如果是,是哪一个?另外,请确保在此规则上方包含
RewriteEngine On
。RewriteEngine On处于启用状态。我在你的评论后编辑了我的回复,我提到我打印了$\u GET,但它没有找到cat\u id。不确定RewriteBase是什么,需要查看upOK没有添加RewriteBase,但我以前从未需要它?其他一切正常,只需要从url获取两个变量,而不是一个。在测试过程中,它位于子文件夹中,但我注意到,如果有子文件夹或没有子文件夹,其他链接都可以工作。
<?php
var_dump($_GET);
?>
array (size=2)
    'id' => string '156' (length=3)
    'cat_id' => string '53' (length=2)