所以,我在.htaccess中有这段代码:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
每个文件都丢失了它的扩展名(/index.php - > / index等),并且完全正常。但是后来,我开始使用管理面板,我在那里使用了一些GET参数。例如,有问题的URL看起来像:
example.com/admin?cat=1
据我所知,RewriteRule只在RewriteBase之后获取字符串并且没有捕获GET参数,对吧?那么,为什么当我尝试访问此URL时,会将其重写为此?
http://example.com/C:/OpenServer/domains/example.com/admin/1/
.htaccess中也有这一行(但看起来没有问题):
RewriteRule ^admin/(.*)$ admin.php?cat=$1
答案 0 :(得分:0)
在回答here时,您必须在[QSA]
行的末尾添加RewriteRule
:
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [QSA]
谷歌搜索查询引导我得到答案:htaccess pass parameters