我知道这类问题被问了很多,但我一直没能找到解决方案。
我的.htaccess代码重写它,使第一个参数是页面,然后最多3个参数是param1、param2和param3。这很好,例如当url为"localhost/portal/dashboard"时。但是当url是"localhost/portal/dashboard/"(额外的斜杠)时,它不起作用,并给出404错误。
这是我的.htaccess文件:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)$ index.php?page=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)$ index.php?page=$1¶m1=$2 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/([^/]+)$ index.php?page=$1¶m1=$2¶m2=$3 [L]
提前谢谢。
未测试,但在重写匹配器的末尾添加一个可选的斜杠可能会起作用,如下所示:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ index.php?page=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?page=$1¶m1=$2 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ index.php?page=$1¶m1=$2¶m2=$3 [L]