相对路径和mod_rewrite问题

时间:2016-09-21 15:40:48

标签: mod-rewrite

使用mod_rewrite时遇到问题。 我想要:

htp://example.com/a/some_text - > htp://example.com/?p1 = some_text和 htp://example.com/b/some_text - > HTP://example.com/ P1 = SOME_TEXT

所以,我输入:

RewriteCond %{REQUEST_URI} ^(.*)\/(a|b)\/(.*)$

RewriteRule ^(.*)$ ?fsearch=$2 [QSA]

并在css中获取错误的相对路径,例如htp://example.com/a/CSS/main.css而不是htp://example.com/CSS/main.css。并且在2美元中也得不到任何东西。

请帮助

1 个答案:

答案 0 :(得分:0)

$2尝试选择RewriteRules主题的第二个捕获组,但只有一个!您可能意味着%2RewriteCond ...

中选择

由于您只在RewriteRule中追加查询字符串,原始URI(路径)保持不变。

您可以简化RewriteRule中的模式,因为您对该主题不感兴趣。

这可能就是你要找的东西:

RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*)\/(a|b)\/(.*)$
RewriteRule ^ /?fsearch=%3 [QSA]

然而,更好的是直接重写您实际想要处理请求的任何脚本以安全另一次重写以找到索引文档,如下所示:

RewriteEngine on
RewriteCond %{REQUEST_URI} ^(.*)\/(a|b)\/(.*)$
RewriteRule ^ /index.php?fsearch=%3 [QSA]

除非你决定使用RewriteCond中的第一个捕获组,否则你也可以进一步简化:

RewriteEngine on
RewriteCond %{REQUEST_URI} \/(a|b)\/(.*)$
RewriteRule ^ /index.php?fsearch=%2 [QSA]