如何通过RewriteRule绕过%23(哈希符号)而不丢失数据


How to bypass %23 (hash sign) through RewriteRule without data loss?

我有以下.htaccess文件:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/command
RewriteRule .* /command/rewritehandler.php?q=%{REQUEST_URI} [B]

请参阅当前未回答问题的规格https://stackoverflow.com/questions/29376788/mod-rewrite-directives-and-valid-invalid-utf-8-characters-after-first-character。如果请求服务器以下/aaa%23%23aa,则rewritehandler.php仅接收/aaa。看起来REQUEST_URI只处理%23之前的数据。我应该键入什么?

RewriteCond捕获值,然后使用反向引用使其工作:

RewriteEngine On
RewriteCond %{REQUEST_URI} (.+)
RewriteRule !^command/ /command/rewritehandler.php?q=%1 [NC,B,L,QSA]