2015-10-09 3 views
-1

В приведенном выше коде есть строки, которые у меня есть в моем файле .htaccess. Проблема в том, что когда одна команда работает как шарм, но когда я добавляю много команд, они не работают ни с одним из них. Пожалуйста, помогите мне найти ошибку.Файл .htaccess не работает. У меня есть ошибка?

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^/]+)/$ $1.php 
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$ 
RewriteRule (.*)$ /$1/ [R=301,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 %{HTTP_USER_AGENT} libwww-perl.* 
RewriteRule .* ? [F,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> 

ответ

1

А несколько правил:

  1. Всегда надевайте ваши правила переадресации перед любыми внутренними правилами перезаписи, так что ничего с R флага должно быть первым
  2. Если вы используете F flag, в правиле блокировать доступ, эти правила должны быть до все правила, включая ваши правила переадресации (с флагом R)
  3. условия Rewrite применяются только к сразу по правилу, поэтому если условия должны быть применены к нескольким правилам, эти условия должны быть повторены для каждого из них
  4. Эти .php правила полностью разбиты и должны быть переписаны

Кроме того, директивы 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> 
+0

Спасибо братан, ваш ответ и советы очень полезны – billo

Смежные вопросы