我在下面配置了这个Apache rewriterrule,它有一个问题,它允许以下URL而不返回HTTP 404错误。
http://www.crmpicco.lan/golf/glasgow/play/explore/features/explore/course-features/ayrshire/parkland/(这只是一个用于开发的本地URL,不能公开访问)
RewriteRule ^golf/([^.]+)/([^.]+)/([^.]+)/$ /golf/?city=$1&golf_region=$2&golf_category=$3 [QSA,L]
当我导出PHP $_REQUEST
超全局变量时,它会给我这些值:
[url] => golf/
[city] => glasgow/play/explore/features/explore/course-features
[golf_region] => ayrshire
[golf_category] => parkland
值得注意的是,city
不正确。我想要做的是在正斜杠之间只允许一个字符串
rewriterrule可以配置成这样吗?
试试吧。
RewriteRule ^golf/([^'/]+)/([^'/]+)/([^.]+)/$ /golf/?city=$1&golf_region=$2&golf_category=$3 [QSA,L]
问题是使用这个正则表达式:
([^.]+)
表示匹配1个或多个字符的文本,直到找到点/句号。你应该使用:
([^/]+)
表示匹配1个或多个字符的文本,直到找到正斜杠。
修改后的规则为:
RewriteRule ^golf/([^/]+)/([^/]+)/([^/]+)/?$ /golf/?city=$1&golf_region=$2&golf_category=$3 [QSA,L,NC]