【问题标题】:Can't access $_GET after rewrite重写后无法访问 $_GET
【发布时间】:2016-02-26 15:52:10
【问题描述】:

这是我的.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 参数传递给我重写的 URL,该参数将被忽略。因此,如果我尝试访问这里:

index.php?page=page_id

参数page 被忽略。好像根本没有通过。

这个问题可以解决吗?如果有,怎么做?

【问题讨论】:

标签: php linux apache .htaccess mod-rewrite


【解决方案1】:

你应该使用这条规则:

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

【讨论】:

猜你喜欢
  • 2018-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-27
  • 2015-05-14
  • 2011-07-08
  • 2022-01-05
  • 1970-01-01
相关资源
最近更新 更多