htaccess重写规则中的环境变量未设置

时间:2016-05-31 10:52:24

标签: php apache .htaccess mod-rewrite

在我的.htaccess文件

中使用以下条目时
RewriteEngine On
SetEnv rewritten 0
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)(/|$) /#$1 [L,NE,R=302,E=rewritten:1]

<url>/test/重写为<url>/#test

目标是将“测试”部分保留在环境变量中,因此我可以使用php更改Facebook元标记,并使用锚点滚动到我的单页网站上的某个部分。对于上面的示例,rewritten变量始终为0,如果我删除SetEnv行,则根本不会设置该变量。

我已经读过,在302执行重定向后,该变量可能不会被保留。有没有其他方法可以做到这一点?欢迎使用其他解决方案 - 我的总体目标是链接到我的应用程序的特定部分,并根据此部分设置元标记。

这里有多个问题,其中人们试图用锚点部分重写一个网址,没有它的网址 - 这不是我的问题,因为它无法完成。

感谢。

修改 以上是不可能的。将以下内容添加到.htaccess,将<url>/test重定向到<url>/?test#test。然后,PHP可以检查test参数是否已设置并相应地修改元标记。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)(/|$) /?$1#$1 [L,NE,R=302]

1 个答案:

答案 0 :(得分:0)

以上是不可能的。将以下内容添加到.htaccess,将<url>/test重定向到<url>/?test#test。然后,PHP可以检查test参数是否已设置并相应地修改元标记。

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)(/|$) /?$1#$1 [L,NE,R=302]
相关问题