Php 为什么我不能对多个GET元素使用url重定向?
我正在尝试使用多个get参数编写URL。URL中的参数是1)类别名称2)纬度和3)经度。其中纬度和经度是可选的 这是我的htaccess重定向:Php 为什么我不能对多个GET元素使用url重定向?,php,regex,.htaccess,url-rewriting,Php,Regex,.htaccess,Url Rewriting,我正在尝试使用多个get参数编写URL。URL中的参数是1)类别名称2)纬度和3)经度。其中纬度和经度是可选的 这是我的htaccess重定向: RewriteRule ^lists/([a-zA-z]+)/[^\d,.]/[^\d,.]/ lists.php?category=$1&latitude=$2&longitude=$3 This is my url to this page : https://example.com/lists/cars/19.1905792/7
RewriteRule ^lists/([a-zA-z]+)/[^\d,.]/[^\d,.]/ lists.php?category=$1&latitude=$2&longitude=$3
This is my url to this page :
https://example.com/lists/cars/19.1905792/72.96778239999999
actual url :
https://example.com/listAds.php?category=cars&lat=19.1905792&lng=72.96778239999999
现在问题来了
1) 当我使用这个和其他问题时,我得到一个404错误页面
2) 正如我提到的,纬度和经度是可选的。。当这两个未设置时,它们会给我错误
我已经用一个GET请求在其他页面上做了同样的事情,在那里效果很好。- 您已使其匹配除数字以外的任何内容(字符列表开头的
^
)\d
- 您还没有将这两个数字设置为可选<代码>[^\d,.]表示它只需要这些字符中的一个。因为它只能匹配逗号或点中的一个数字,所以还不能匹配小数。如果要量化多少次,您需要为一个或多个添加
,为零个或多个添加
,或者在*
之后添加一个范围[^\d,.]
{min,max}
- 即使这两个数字匹配,您也无法捕获它们-缺少
()
- 您可能只想在同时提供经度和纬度的情况下进行匹配,而不是一个或另一个-缺少对它们进行分组(但不捕获)
\
来转义/
,但请尝试使用类似的正则表达式测试程序,因此忽略\/
最终结果类似于/lists/([a-zA-z]+)/(?:([\d.]+)/([\d.]+)/){0,1}
(?:…){0,1}
组是非捕获的,但确保其中的所有内容都是一个组-即只提供经度和纬度(以及精确的零或一组)。有关详细说明,请参阅
这尚未针对Apache进行测试。重写规则^lists/([a-zA-z]+)/(?:([\d.]+)/([\d.]+)/)lists.php?im=$1&纬度=$2&经度=$3这是根据您的建议制作的。。但不工作??您缺少
{0,1}
。除此之外,你还没有描述为什么它不起作用。list.php会受到攻击吗?哪些URL不能使用?,$\u REQUEST['latitude']
等在被点击时填充的内容是什么?等等。请记住,在internet上你不认识的人正试图帮助你解决问题,请尽量提供更多的信息来帮助他们。请参阅注意事项,您可能需要在目的地使用\&逃离。