所以这个让我难过......
我设置了htaccess,因此当用户键入名称(假设它正确)时,它会将浏览器重定向到正确的文件(即http://localhost/mgo/barbis)。当我在URL中使用变量(即http://localhost/mgo/barbis?page=menu&temp=1时,由于我如何解析数据,它仍然可以正常工作。但是当我想从字符串中提取$_GET
变量时,它不起作用。
我尝试了var_dump($_GET)
,它向我显示唯一的现有变量是[id]=>barbis
。
我知道一个可行的解决方案是在"?"之后捕获数据。 (SERVER_URI, substr, strpos, etc
)并爆炸成阵列,但我很好奇这是否只是我想念的简单事物。
我不知道这是否重要,但从好的角度来看,这是我的htaccess布局。
RewriteEngine On
RewriteBase /mgo/modules/menu/index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9]+)$ index.php?id=$1
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9]+)/$ index.php?id=$1
<filesMatch "\.(html|htm|js|css)$">
FileETag None
<ifModule mod_headers.c>
Header unset ETag
Header set Cache-Control "max-age=0, no-cache, no-store, must-revalidate"
Header set Pragma "no-cache"
Header set Expires "Wed, 11 Jan 1984 05:00:00 GMT"
</ifModule>
</filesMatch>
ErrorDocument 404 /mgo/404.php
非常感谢任何反馈。谢谢!
答案 0 :(得分:1)
使用:
RewriteEngine On
RewriteBase /mgo/modules/menu/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-zA-Z0-9]+)/?$ index.php?id=$1 [QSA,L]
使用[QSA]:当替换URI包含查询字符串时,RewriteRule的默认行为是丢弃现有查询字符串,并将其替换为新生成的查询字符串。使用[QSA]标志会导致查询字符串合并。
/?
使用或不使用最终/