我的.htaccess文件不起作用。我有错误吗?

时间:2015-10-09 17:52:54

标签: .htaccess

在上面的代码中是我在.htaccess文件中的行。问题是,当一个命令像魅力一样工作时,但是当我添加许多命令时,任何一个命令都不起作用。请任何人帮助我找到错误。

class RegistrationsController < Devise::RegistrationsController

def create 
 operation 1
 method 2
 ........
end

1 个答案:

答案 0 :(得分:1)

一些经验法则:

  1. 始终将重定向规则置于任何内部重写规则之前,因此任何带有R标记的内容必须是第一个
  2. 如果您使用F标记,则在阻止访问的规则中,这些规则必须之前所有规则,包括重定向规则(带有R标记的规则)
  3. 重写条件仅适用于紧随其后的规则,因此如果条件需要应用于多个规则,则必须为每个规则重复这些条件
  4. 这些.php规则完全被破坏,需要重写
  5. 此外,mod_expires指令不会影响规则。

    所以也许你想要这样的东西?:

    RewriteEngine On
    
    RewriteCond %{HTTP_USER_AGENT} libwww-perl.* 
    RewriteRule .* ? [F,L]
    
    RewriteCond %{HTTP_HOST} !^www.marinoswood.gr$ [NC]
    RewriteRule ^(.*)$ http://www.marinoswood.gr/$1 [L,R=301]
    
    RewriteCond %{HTTP_HOST} ^185\.4\.133\.44
    RewriteRule (.*) http://www.marinoswood.gr/$1 [R=301,L]
    
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
    RewriteRule (.*)$ /$1/ [R=301,L]
    
    RewriteCond %{DOCUMENT_ROOT}/$1.php -f
    RewriteRule ^([^/]+)/$ $1.php [L]
    RewriteCond %{DOCUMENT_ROOT}/$1/$2.php -f
    RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php [L]
    
    
    <IfModule mod_expires.c>
        ExpiresActive on
    
        ExpiresByType image/jpg "access plus 1 month"
        ExpiresByType image/jpeg "access plus 1 month"
        ExpiresByType image/gif "access plus 1 month"
        ExpiresByType image/png "access plus 1 month"
    </IfModule>