所以我在我的htaccess中有这个
RewriteRule ^page(?:/error(?:/([^/]+))?)?/?$ page.php?error=$1 [L,QSA]
但我总是得到一个空数组,这是错误=“”。页面上方的任何内容都应该是可选的,但是它将$ _GET数组中的错误设置为空。
Array ( [error] => )
RewriteEngine on
Options -MultiViews
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^page(?:/error(?:/([^/]+))?)?/?$ page.php?error=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [L]
答案 0 :(得分:1)
您很可能已MultiViews
开启。
在.htaccess上添加此行以将其关闭:
Options -MultiViews
更新:完整.htaccess:
Options -MultiViews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^register(?:/error(?:/([^/]+))?)?/?$ /register.php?error=$1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.+?)/?$ /$1.php [L]