我有一系列的网址,看起来像这样:
example.com/something/page example.com/another
我需要重定向到
example.com/folder/to/file?q=something/page example.com/folder/to/file?q=another
我不太确定**%{QUERY_STRING}**的位置(或者是否需要)?预先感谢!
lp0sw83n1#
在多次破坏服务器之后,我终于自己修复了这个问题。我不确定这是不是最好的答案,但只是给可能需要它的人一个参考:
RewriteCond %{REQUEST_URI} ^/([_0-9a-z-]+)$ [NC] RewriteRule ^(.*)$ folder/to/file?q=$1 [L]
ntjbwcob2#
根据你的回答和我之前的评论......不需要前面的RewriteCond指令,因为必要的regex可以在RewriteRule指令中执行,这也更有效。例如,上面的等价于下面的:
RewriteCond
RewriteRule
RewriteRule ^([\w-]+)$ folder/to/file?q=$1 [L]
\w速记字符类别与[_0-9a-zA-Z]相同,也不需要NC(nocase)旗标。然而,这个规则并不像第一个例子中那样处理/something/page的URL(有两个路径段)。如果你只是想把URL路径完全复制到查询字符串中(就像你的例子中那样),你不需要为此设置一个单独的规则。例如,以下内容就足够了:
\w
[_0-9a-zA-Z]
NC
nocase
/something/page
RewriteRule ^[\w-]+(/[\w-]+)?$ folder/to/file?q=$0 [L]
上面的内容同时匹配/another和/something/page。请注意,$0反向引用(与$1相反)包含与RewriteRule * 模式 * 匹配的完整URL路径。
/another
$0
$1
2条答案
按热度按时间lp0sw83n1#
在多次破坏服务器之后,我终于自己修复了这个问题。我不确定这是不是最好的答案,但只是给可能需要它的人一个参考:
ntjbwcob2#
根据你的回答和我之前的评论......不需要前面的
RewriteCond
指令,因为必要的regex可以在RewriteRule
指令中执行,这也更有效。例如,上面的等价于下面的:\w
速记字符类别与[_0-9a-zA-Z]
相同,也不需要NC
(nocase
)旗标。然而,这个规则并不像第一个例子中那样处理
/something/page
的URL(有两个路径段)。如果你只是想把URL路径完全复制到查询字符串中(就像你的例子中那样),你不需要为此设置一个单独的规则。例如,以下内容就足够了:
上面的内容同时匹配
/another
和/something/page
。请注意,
$0
反向引用(与$1
相反)包含与RewriteRule
* 模式 * 匹配的完整URL路径。