.htaccess 如何使用htaccess使用参数重定向路径

ulmd4ohb  于 2022-11-16  发布在  其他
关注(0)|答案(2)|浏览(118)

我有一系列的网址,看起来像这样:

example.com/something/page
example.com/another

我需要重定向到

example.com/folder/to/file?q=something/page
example.com/folder/to/file?q=another

我不太确定**%{QUERY_STRING}**的位置(或者是否需要)?预先感谢!

lp0sw83n

lp0sw83n1#

在多次破坏服务器之后,我终于自己修复了这个问题。我不确定这是不是最好的答案,但只是给可能需要它的人一个参考:

RewriteCond %{REQUEST_URI} ^/([_0-9a-z-]+)$ [NC]
RewriteRule ^(.*)$ folder/to/file?q=$1 [L]
ntjbwcob

ntjbwcob2#

RewriteCond %{REQUEST_URI} ^/([_0-9a-z-]+)$ [NC]
RewriteRule ^(.*)$ folder/to/file?q=$1 [L]

根据你的回答和我之前的评论......不需要前面的RewriteCond指令,因为必要的regex可以在RewriteRule指令中执行,这也更有效。例如,上面的等价于下面的:

RewriteRule ^([\w-]+)$ folder/to/file?q=$1 [L]

\w速记字符类别与[_0-9a-zA-Z]相同,也不需要NCnocase)旗标。
然而,这个规则并不像第一个例子中那样处理/something/page的URL(有两个路径段)。如果你只是想把URL路径完全复制到查询字符串中(就像你的例子中那样),你不需要为此设置一个单独的规则。
例如,以下内容就足够了:

RewriteRule ^[\w-]+(/[\w-]+)?$ folder/to/file?q=$0 [L]

上面的内容同时匹配/another/something/page
请注意,$0反向引用(与$1相反)包含与RewriteRule * 模式 * 匹配的完整URL路径。

相关问题