Apache php以及之后的一切

Apache php以及之后的一切,apache,rewrite,Apache,Rewrite,上述操作可以从我所有的URL中删除.php。但是,如果url后存在所有参数,是否可以删除这些参数?例如,将site.com/index.php?id=24重写为site.com/index在%1之后添加?: Options +FollowSymLinks -MultiViews # Turn mod_rewrite on RewriteEngine On RewriteBase / # To externally redirect /dir/foo.php to /dir/foo Rewrit

上述操作可以从我所有的URL中删除
.php
。但是,如果url后存在所有参数,是否可以删除这些参数?例如,将
site.com/index.php?id=24重写为
site.com/index
在%1之后添加

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]

## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f [NC]
RewriteRule ^ %{REQUEST_URI}.php [L]

当重写规则的目标URI中存在
时,除非有
QSA
标志,否则该规则不会追加查询字符串。

在哪里/如何追加QSA标志?我对这一点还不熟悉。@Norse在方括号内,所有的旗帜都放在方括号内。但是你不想要它,因为你不想附加查询字符串如果我想传递GET参数,这不涉及QSA标志吗?@Norse如果你想要GET参数,那么你根本不想要
。我以为你想摆脱他们。如果只希望传递某些GET参数,则需要与
%{QUERY\u STRING}
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1? [R,L,NC]
# here ---------^