重写后无法访问$ _GET

时间:2016-02-26 15:52:10

标签: php linux apache .htaccess mod-rewrite

这是.htaccess的mod_rewrite部分:

RewriteEngine on
RewriteBase  /

RewriteRule ^([a-zA-Z0-9_-]+)/([a-zA-Z0-9_-]+)$ web/$2?w=$1 [QSA]

如果有人访问http://example.com/webname/,这样做是什么 真正处理的URL是 http://example.com/web/index.php?w=id

现在,如果我尝试将一个额外的随机 GET 参数传递给我重写的网址,则会忽略该参数。所以,如果我尝试访问这里:

index.php?page=page_id

忽略参数page。它似乎根本没有通过。

可以解决这个问题吗?如果是这样,怎么样?

1 个答案:

答案 0 :(得分:0)

您应该使用此规则:

RewriteEngine on
RewriteBase  /

RewriteRule ^([\w-]+)/?$ web/index.php?w=$1 [QSA,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([\w-]+)/([\w.-]+)/?$ web/$2?$1=1 [QSA,L]

这将允许您使用漂亮的URL作为:

http://example.com/welcome
http://example.com/welcome?page=page_id