我的.htaccess
知识有限,我需要一些帮助。我需要做一些重定向来启用漂亮的网址。在本地一切正常,但在另一个开发服务器中不起作用。显然,重定向时查询字符串会丢失。我需要重定向这个http://mysite.local/info/permalink/1
对这个http://mysite.local/info?proxy=true&id=1
我的.htaccess
代码:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
#remove /index.php from home url and redirect to root.
#http://mysite.local/index.php -> http://mysite.local/
RewriteCond %{THE_REQUEST} ^.*\/index\.php?\ HTTP/
RewriteRule ^(.*)index\.php?$ "/$1" [R=301,L,QSA]
#pretty url without index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [PT,QSA,L]
#rewrite to handle some permalink saved on my db.
#http://mysite.local/info/permalink/1
#http://mysite.local/info/proxy=true&id=1
RewriteRule ^([^/]+)/info/([a-zA-Z0-9\-]+)/([0-9]+) /info/?proxy=true&id=$3 [L]
</IfModule>
重定向有效,但查询字符串不存在。当我var_dump($_GET)
在 info 模块上运行时,我得到一个空数组array(0) {}
,我尝试使用它来解决更改
RewriteRule .* index.php [PT,QSA,L]
至RewriteRule ^(.*)$ /%{QUERY_STRING} [L]
和
RewriteRule ^([^/]+)/info/([a-zA-Z0-9\-]+)/([0-9]+) /info/?proxy=true&idobj=$3 [L]
至
RewriteRule ^([^/]+)/info/([a-zA-Z0-9\-]+)/([0-9]+) /info/?proxy=true&idobj=$3 [QSA,NE,L]
服务器 API 是 CGI/FastCGI
我应该改变什么以确保我的重写按预期工作并且$_GET
变量仍然可以访问?提前谢谢