如何将所有请求重定向到index.php并保留其他GET参数?

mpe*_*pen 14 apache mod-rewrite

这是我到目前为止所得到的:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !index.php
RewriteRule .* index.php?url=$0 [L]
Run Code Online (Sandbox Code Playgroud)

但是,当我去soemthing像/a?b=c,然后检查GET参数,可以我只得到aurl,并且b丢失.我该如何保留?

小智 25

如何使用FallbackResource指令:"为不映射到文件的请求定义默认URL"

<Directory /web/example.com/htdocs/blog>
    FallbackResource /index.php
</Directory>
Run Code Online (Sandbox Code Playgroud)

这样您就不必在每个请求上调用modRewrite模块.

http://httpd.apache.org/docs/2.2/mod/mod_dir.html#fallbackresource

  • 是不是使用回退实际上比直接重定向慢?由于访问者现在必须等到引擎发生故障**所有**匹配才重定向到index.php. (2认同)

Dim*_*try 17

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !index.php
RewriteRule .* index.php?url=$0 [QSA,L]

您需要在重写规则中使用QSA.

  • @vsync 然后添加一个与这些文件不匹配的“RewriteCond”。例如: `RewriteCond %{REQUEST_URI} !^/js/` 不重写 `js` 目录下的任何文件。 (2认同)