首页 > 解决方案 > 使用 arg + uri 进行 Htaccess 内部重写

问题描述

我正在尝试将 example.com/abc 内部重写为 example.com/?//abc,其中 'abc' 可以是任何字符串。

尝试了以下规则:

RewriteEngine On
RewriteRule ^(\w+)/?$  /?//$1 [L,QSA,NC,PT]

但是,这并没有按预期重定向。从日志中,我可以看到以下条目:

applying pattern '^(\\w+)/?$' to uri 'abc
rewrite 'abc' -> '/?//abc'
split uri=/?//abc -> uri=/, args=//abc
internal redirect with / [INTERNAL REDIRECT]
applying pattern '^(\\w+)/?$' to uri ''

不确定,为什么它会根据“?”将模式拆分为 uri 和 arg。任何人都可以帮助

标签: regexapachemod-rewriteurl-rewritingpretty-urls

解决方案


由于您的第二个示例有效,请删除该R标志。它将重定向发送到浏览器。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{QUERY_STRING} "^$"
RewriteRule ^(.*)$ index.html?//$1/ [L]

推荐阅读