显然,我的.htaccess重写会占用我页面上的所有$_GET
- 变量:
在我的index.php文件中访问URL http://192.168.1.1/welcome/test?getvar=true并运行var_dump($_GET)
时,我得到了这个输出:
array
'/welcome/test' => string '' (length=0)
所以没有$_GET
- 数据可用且我的网址中没有getvar
- 变量的标志。
这是我的.htaccess:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]
我应该更改什么以确保我的重写按预期工作但$_GET
- 变量仍然可以访问?
答案 0 :(得分:55)
您需要“QueryString附加”选项:
RewriteRule ^(.*)$ index.php?route=/$1 [QSA,L]
编辑:添加了@ DonSeba的贡献,因为它是正确的。
答案 1 :(得分:6)
细微的细节变化:
RewriteRule ^(.*)$ index.php?/$1 [L]
到
RewriteRule ^(.*)$ index.php?route=$1 [QSA,L]
现在所有路线都在$ _GET [“route”]
中可见答案 2 :(得分:1)
RewriteRule ^(.*)?(.*)$ index.php?/$1&$2 [L]
答案 3 :(得分:0)
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^myapi(.*) ./my_real_api_file.php? [QSA]
</IfModule>
为我做了诀窍。
您现在可以请求:http://www.mydomain.com/myapi?foo=xy&bar=ab
并将重定向到:http://www.mydomain.com/my_real_api_file.php?foo=xy&bar=ab
隐藏你的api代码非常有用。