我正在与htaccess战斗,我找到了一些我讨论案例的页面 - 但不完全正确,所以我需要帮助。
我的网页上有一个登录系统,带有php。所以每个.html页面在发送之前都必须发送到一个php脚本,该脚本测试用户是否已登录,成功转发到请求的.html页面,而不是登录页面(index.html) )。
我有不同的语言文件夹,并将我的.htaccess放在所有这些文件夹的根目录中,我希望所有文件夹只有一个.htaccess。
文件夹结构:
/ members-manager / web / $ country / 这里是.htaccess
这就是我已经成功检查登录的方法,但我得到了一个循环:
RewriteRule ^(.+)$ members-manager/service/validate-user-login-for-url.php?url=%{REQUEST_URI} [L,QSA]
任何tipps?
谢谢!
-------------更新,更具体地说明问题:-------------
我更好地描述了这个过程:
网址(例如" www.domain.com/members-manager/web/en/launch.html")
=>
.htaccess: - >转发到PHP以验证登录
=>
成员的管理器/服务/验证用户登录换url.php?URL =%{REQUEST_URI}
=>
PHP:用户是否已登录?如果是:转发回原始网址(%{REQUEST_URI})
=>
URL(%{REQUEST_URI})
STOP。
但是:我的.htaccess重写规则再次匹配,所以循环正在进行:-( 我怎么能写一个条件,不要再次重写网址"来自" PHP脚本?
答案 0 :(得分:2)
如果我理解你是正确的,那么你在每个"国家/地区都有.htaccess文件。文件夹,以避免该循环,您只需要在路径的开头添加/
RewriteRule ^(.+)$ /members-manager/service/validate-user-login-for-url.php?url=%{REQUEST_URI} [L,QSA]
但是如果你只在你的根文件夹中放入一个.htaccess文件并将此规则添加到.htaccess文件中,可能会有更好的解决方案
RewriteRule ^members-manager/web/(.+)/(.+)$ members-manager/service/validate-user-login-for-url.php?url=members-manager/web/$1/$2 [L,QSA]