2013-04-08 77 views
0

我无法访问我的GET请求......mod_rewrite是否会导致GET请求被忽略?

我的.htaccess:

Options +FollowSymlinks -MultiViews 
RewriteEngine On 
RewriteBase /alex 
RewriteRule ^admin/([a-zA-Z0-9]+)/?$ admin/index.php?page=$1 
RewriteRule ^admin/([a-zA-Z0-9]+)?$ admin/index.php?page=$1 
RewriteCond %{REQUEST_URI} !(admin|assets|inventory|test) 
RewriteRule ^([a-zA-Z0-9]+)/$ index.php?page=$1 
RewriteCond %{REQUEST_URI} !(admin|assets|inventory|test) 
RewriteRule ^([a-zA-Z0-9]+)$ index.php?page=$1 
ErrorDocument 404 /alex/index.php?page=404 
ErrorDocument 403 /alex/index.php?page=404 

我打的网址:

http://example.com/alex/admin/users?pagenum=37

示例PHP代码:

echo $_GET["pagenum"]; 

但是,我绝对没有得到变量echo'ed在我的PHP。我的.htaccess是否造成这种情况?如果不是......什么是?

回答

4

您需要使用QSA标志在你重写:

Options +FollowSymlinks -MultiViews 
RewriteEngine On 
RewriteBase /alex 
RewriteRule ^admin/([a-zA-Z0-9]+)/?$ admin/index.php?page=$1 [L,QSA] 
RewriteRule ^admin/([a-zA-Z0-9]+)?$ admin/index.php?page=$1 [L,QSA] 
RewriteCond %{REQUEST_URI} !(admin|assets|inventory|test) 
RewriteRule ^([a-zA-Z0-9]+)/$ index.php?page=$1 [L,QSA] 
RewriteCond %{REQUEST_URI} !(admin|assets|inventory|test) 
RewriteRule ^([a-zA-Z0-9]+)$ index.php?page=$1 [L,QSA] 

的标志将任何现有的查询字符串添加到您在规则的目标构建的一个结束。通常,如果规则目标中没有?,则查询字符串默认为追加。但是如果您的目标确实有?,则需要QSA

+0

什么是L标志呢? – Pachonk 2013-04-08 09:53:23

+0

@Pachonk它只是停止重写当前的迭代,没有必要应用任何其余的规则,如果你已经匹配其中之一 – 2013-04-08 09:54:01

+0

好吧!谢谢,我会在10分钟内接受这个答案。对不起,这里有一些用户id10t错误。 – Pachonk 2013-04-08 09:54:43

相关问题