.htaccess在从子文件夹中使用时会导致无限循环,在域根目录中正常工作

时间:2013-05-16 13:39:31

标签: php .htaccess mod-rewrite

我正在使用这个用于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]

1 个答案:

答案 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]
相关问题