您好我有这样的代码在我.htaccess
文件:PHP文件执行2次htaccess的重定向和Facebook的登录代码
RewriteOptions inherit
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ http\:\/\/www.%{HTTP_HOST}/$1 [R=301,L]
Options +FollowSymLinks
RewriteEngine on
RewriteRule ([0-9]+)/([a-zA-Z]+)/ embed.php?video=$1 [QSA,L]
RewriteRule ([0-9]+)/ embed.php?video=$1 [QSA,L]
,并在embed.php我也有登陆密码(与登录请求,请求代码和状态)每个想工作正常,当用户登录,但会产生两次,并在接下来的error_log错误出现后,用户登录码和状态:[26-Sep-2013 02:02:04 America/Chicago] CSRF state token does not match one provided.
之后,我删除.htaccess中的代码并运行直接embed.php这个文件不会运行两次,CSRF错误不再出现。
在mebed文件中,我使用了一个代码来检查用户是否已经登录,并请求登录,并且在facebook登录后用户重定向回请求url。 我使用此代码htaccess的创建类似的用户后http://domain.com/videoid/title SEO友好的URL登录网址看起来像http://domain.com/videoid/title?code=fbcode&access_token=fb_access_token
任何人都可以帮我解决这个问题呢?
另一个编辑: 在Facebook开发网页我把“网站与Facebook登录”只有HTTP:// WWW域名/ 而在“应用程序域:”我不`吨输入任何域名。
非常感谢, 埃米尔
如果你重定向到你的'embed.php'文件的原始URL,你不会得到一个重定向循环。也许这就是发生了什么,但是当CSRF错误出现时,你不重定向? – Qben
是的,当我删除htaccess或从htaccess删除重定向时,错误不会显示。当删除htaccess并使用embed.php?video = id文件时,facebook用户登录后只会在embed.php?video = id&code = fbcode&access_token = fb_access_token上重定向一次,并且CSRF错误不会出现在errror_log中。也许问题是因为我在FB上设置了网站上的应用程序设置,使用FB登录链接http:/domain.com/,当我使用htaccess重定向用户时,重定向到domanin,com/videoid /而不是根域。可能这是问题吗? –