繁体   English   中英

防止在重写的URL中出现更多的斜杠?

[英]Prevent more slashes in rewritten URL?

我有以下htaccess规则来重写我的网址

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^app/(.*)/(.*)/(.*)$ app/index.php?app_released=$1&app_name=$2&app_version=$3 [L,NC]
</IfModule>

可以将其重写为app/3-25-2018/name/version ,但是当用户尝试在斜杠后放置更多斜杠和一些随机值时,例如app/3-25-2018/name/version/something/else/here它应该将它们重定向到我的自定义404页面,但是PHP收到未定义的app_released错误,因为它无法正确读取GET变量。 我怎样才能解决这个问题?

问题在于您使用的正则表达式,尤其是(.*) ,它匹配所有字符,包括/ 而是用([^\\/]*)代替(.*) ,该字符匹配/以外的所有字符。

正确的正则表达式:

^app\/([^\/]*)\/([^\/]*)\/([^\/]*)$

在以下示例中,请参见上面的正则表达式:

  • 匹配app/3-25-2018/name/version 在这里
  • 不匹配app/3-25-2018/name/version/something/else/here - 在这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM