我有一个htaccess,可以将除3个特定文件夹中的网址之外的任何网址重定向到处理显示网页的php文件:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/app [NC]
RewriteCond %{REQUEST_URI} !^/templates [NC]
RewriteCond %{REQUEST_URI} !^/downloads [NC]
RewriteCond %{THE_REQUEST} \ /+([^\ \?]*)
RewriteRule (.*)$ ./app/index.php?url=%1 [L,B]
但问题是,网址中的任何查询信息都会丢失。我想知道是否有可能保留它。
例如:
mysite.com/test?page=1 would become /app/index.php?page=1&url=test
而不是(现在发生的事情):
mysite.com/test?page=1 becomes /app/index.php?url=test
答案 0 :(得分:1)
您只需要QSA
标志:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/app [NC]
RewriteCond %{REQUEST_URI} !^/templates [NC]
RewriteCond %{REQUEST_URI} !^/downloads [NC]
RewriteCond %{THE_REQUEST} \ /+([^\ \?]*)
RewriteRule (.*)$ ./app/index.php?url=%1 [L,B,QSA]
QSA
(查询字符串追加)标志在添加新查询参数时保留现有查询参数。