2014-10-15 3 views
0

Я новичок в htaccess и нуждаюсь в помощи для проверки ошибок в моих кодах htaccess ниже?
У меня есть 3 набора кодов переадресации и интересно, мешают ли они друг другу?
Также интересно, есть ли у меня избыточный код перенаправления.Ошибки в переадресации htaccess?

Также, в рамках «Стоп-кода Hotlinking», правильно ли это RewriteCond?

RewriteCond %{HTTP_REFERER} !^http://(www\.)%{HTTP_HOST}/.*$ [NC] 

Моя цель состоит в том, чтобы сохранить www и trailing slash для моих URL-адресов, и удалить index.html для моих URL- Вот мой файл .htaccess

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 
# END WordPress 

#Force Trailing Slash 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1/ [L,R=301] 

#Redirect non-www to www 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1/ [R=301,L] 

#Redirect index.html 
RewriteCond %{THE_REQUEST} ^.*/index.html [NC] 
RewriteRule ^(.*)index.html$ http://www.%{HTTP_HOST}/$1/ [R=301,L] 

#Stop Hotlinking 
RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^$ 
RewriteCond %{HTTP_REFERER} !^http://(www\.)%{HTTP_HOST}/.*$ [NC] 
RewriteRule \.(gif|jpg|jpeg|bmp|zip|rar|mp3|flv|swf|xml|php|png|css|pdf)$ - [F] 

.


Edit:


Вопросы:
-Есть мой обновленный Htaccess ниже правильно?
-У Я поставил RewriteBase / в верхней или оставить как есть (один с # Begin WordPress правил и второй RewriteBase / с # Force Trailing Slash?
-У Мне нужно Options +FollowSymLinks, и если да, то где я поставил это?

Обратите внимание, что I:
-Удален RewriteEngine On и RewriteBase / из правил WordPress и держал его в верхних
-Положите WordPress правил НИЖЕ перенаправляет
-Удалена конца хлещет для #Redirect non-www to www и #Redirect index.html

RewriteEngine On 

# Redirect non-www to www 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

# Redirect index.html 
RewriteCond %{THE_REQUEST} ^.*/index.html [NC] 
RewriteRule ^(.*)index.html$ http://www.domain.com/$1 [R=301,L] 

# Force Trailing Slash 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !(.*)/$ 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1/ [L,R=301] 

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 
# END WordPress 

# Stop Hotlinking 
RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^$ 
RewriteCond %{HTTP_REFERER} !^http://(www\.)domain.com/.*$ [NC] 
RewriteRule \.(gif|jpg|jpeg|bmp|zip|rar|mp3|flv|swf|xml|php|png|css|pdf)$ - [F] 

ответ

1

Неправильное использование. Вы не можете иметь переменные % или обратные ссылки в регулярной части условия. Вы могли использовать regex backreference, хотя. Попробуйте:

RewriteCond %{HTTP_HOST}:::%{HTTP_REFERER} !^([^:]+):::http://(www\.)\1/.*$ [NC] 
+0

Спасибо Jon. Думаю, я не должен настраивать код htaccess. Первоначально это был код, который я нашел в google: ----- RewriteCond% {HTTP_REFERER}!^Http: // (www \.) Domain.com/.*$ [NC] ---- Правильно ли это RewriteCond относительно код Stop Hotlinking? ---------- Кроме того, вы заметили какие-либо ошибки с моими другими кодами htaccess выше? Связано ли 3 набора переадресаций друг с другом? – leko

+0

@leko, если вы знаете, каким будет ваше имя хоста, тогда 'RewriteCond% {HTTP_REFERER}!^Http: // (www \.) Domain.com/.*$ [NC]' в порядке. Проблема с вашими другими переадресациями заключается в том, что они все добавляют '/' в конце. –

+0

Jon относительно «проблемы с вашими другими перенаправлениями заключается в том, что все они добавляют/в конце» ---- На самом деле исходный код НЕ имел косой черты в конце. Я добавил косую черту сам, потому что я думал, что должен поддерживать ее в соответствии с «Принудительным сползанием» RewriteRule. Неправильно ли моя логика? Должен ли я сохранить косую черту или удалить ее (относительно #Redirect не-www на www) (и в отношении #Redirect index.html)? – leko

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