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

时间:2018-03-25 06:56:02

标签: php .htaccess

我有以下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变量。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

问题在于您使用的正则表达式,尤其是(.*),它匹配包括/在内的所有字符。相反,取代(.*) ([^\/]*),其中/除了^app\/([^\/]*)\/([^\/]*)\/([^\/]*)$ 以外的所有字符。

正确的正则表达式:

app/3-25-2018/name/version

请参阅以下示例中的上述正则表达式:

  • 匹配app/3-25-2018/name/version/something/else/here - here
  • 不匹配messageArrived - here