在我的.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]
答案 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]