2

我在构建我的 url 重写时遇到了一些问题。在我的本地服务器上,使用nginx,一切顺利。但是,一旦我试图让它apache与 一起工作htacces,我就会发疯。

我的网址看起来像这样:

http://example.com/controller/action/param1/value1/param2/value2

以下是htaccess前一个案例的工作:

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine on
    RewriteBase /
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteCond %{REQUEST_URI} !^/(images|css|js)/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule ^(.*)$ index.php?$1 [L]
</IfModule>

但在某些情况下,我有一些额外的参数,例如 Facebook 身份验证:

http://example.com/controller/action?hauth.start=Facebook&hauth.time=1382665465

这种情况不适用于以前的htaccess. GET 变量中没有任何内容。我该如何解决这个问题?

4

1 回答 1

2

在规则中使用QSA(查询字符串附加)标志

<IfModule mod_rewrite.c>
    Options +FollowSymLinks
    RewriteEngine on
    RewriteBase /
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteCond %{REQUEST_URI} !^/(images|css|js)/
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule ^(.*)$ index.php?$1 [L,QSA]
</IfModule>

QSAflag 确保在添加新查询参数时保留现有查询字符串。

于 2013-10-24T16:31:09.257 回答