我正在使用这个用于PHP应用程序的.htaccess代码。
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/(login|logout|public)($|/.*$) [NC]
RewriteRule . index.php [L,QSA]
RewriteRule ^login login.php?$1 [L]
RewriteRule ^logout logout.php?$1 [L]
如果我在域根www.website.com
中使用它,那么它工作正常但如果我在文件夹www.website.com/app
中使用它会导致无限循环。,
关于我在这里做错了什么想法?
此外,有没有办法删除给定.htaccess中的websitename.com
并使其完全动态,因此它可以正常工作,而不会为每个不同的网站手动输入域名。
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?websitename.com/ [NC]
RewriteRule \.(jpe?g|gif|bmp|png|txt|pdf|zip|rar|psd|doc|docx|xml|csv)$ - [F,NC]
答案 0 :(得分:0)
问题未遵循以下两条规则使用行尾$
:
RewriteRule ^login login.php?$1 [L]
RewriteRule ^logout logout.php?$1 [L]
这会导致无限循环,因为源URI /login
和目标/login.php
都匹配正则表达式:^login
用以下内容替换您的规则:
RewriteRule ^login/?$ login.php?$1 [L]
RewriteRule ^logout/?$ logout.php?$1 [L]