2017-06-11 50 views
7

mój plik .htaccess na korzeń wygląda następująco:Ignoruje plik .htaccess

RewriteEngine on 
RewriteBase/
options +FollowSymLinks 
RewriteRule ^en/users/profile/?$ [F,NC] 
RewriteRule ^en/users/profile/?([0-9]+)?/?$ en/user/index.php?id=$1 
RewriteRule ^en/users/profile/([0-9]+)/photo/? en/user/index.php?pageID=photoEdit&id=$1 

RewriteCond %{HTTP_REFERER} !^http://example\.ge/?.*$ [NC] 
RewriteCond %{HTTP_REFERER} !^http://example\.dev/?.*$ [NC] 
RewriteCond %{HTTP_REFERER} !^http://localhost/?.*$ [NC] 
RewriteRule \.(gif|jpe?g|png|bmp)$ - [F,NC] 

Może doskonale przekierować na lokalnym komputerze, ale jest ignorowany na serwerze rozmieszczania! To jest phpinfo(); serwera!

jest to folder etc: etc folder

+2

Z wyjścia 'phpinfo()' wynika, że ​​w środowisku wdrażania działa serwer WWW LiteSpeed', a nie Apache. Możesz zajrzeć do tego linku: https://www.internetearnings.com/how-to-check-mod_rewrite-module-in-apache-litespeed-is-loaded/ – anubhava

+0

W Twojej pierwszej dyrektywie "RewriteRule" brakuje _substitution_ i nie będzie działać zgodnie z przeznaczeniem - otrzymasz komunikat o błędzie, jeśli zażądasz '/ pl/users/profile /'. Ale w rzeczywistości nie podajesz adresów URL, które trasujesz. – MrWhite

+0

To prawda. Proszę podać odpowiedź, abym mógł ją zaakceptować. Drogi MrWhite –

Odpowiedz

1
RewriteRule ^en/users/profile/?$ [F,NC] 

Nie przyczyną dlaczego plik .htaccess jest ignorowana (pozostałe odpowiedzi zostały już podane rozwiązania, które, jeśli chodzi o sprawdzenie dyrektywa AllowOverride w konfiguracji serwera), ale brakuje w tym przypadku ważnej zmiany pod numerem w powyższej dyrektywie. Żądanie dotyczące /en/users/profile/ nie będzie zabronionei prawdopodobnie spowoduje tylko błąd/404.

To musiałoby być coś takiego: (. Tylko jeden łącznik dla substytucji)

RewriteRule ^en/users/profile/?$ - [F,NC] 

RewriteCond %{HTTP_REFERER} !^http://example\.ge/?.*$ [NC] 
RewriteCond %{HTTP_REFERER} !^http://example\.dev/?.*$ [NC] 
RewriteCond %{HTTP_REFERER} !^http://localhost/?.*$ [NC] 
RewriteRule \.(gif|jpe?g|png|bmp)$ - [F,NC] 

Należy również przenieść „Hotlink ochronę "dyrektywy (powyżej) do przed dyrektyw routingu. W przeciwnym razie możliwe jest (w zależności od formatu adresu URL), że adres URL jest routowany przed, ochrona łączy jest w stanie zablokować żądanie.

3

Prawdopodobnie nie mają .htaccess plików włączone na serwerze. Spójrz na dyrektywę AllowOverride. Można dodać coś takiego bloku <Directory> do głównego dokumentu Twój <VirtualHost> „s:

AllowOverride all 
+0

Przepraszam, ponieważ jestem nowy w php Nie wiem, czy znalazłem plik dla virtualhost !!! –

+0

Jest to główna konfiguracja serwera Apache, więc zależy to od serwera i sposobu jego zarządzania. Możesz zapytać hosta lub powiedzieć mi, jak wygląda konfiguracja twojego serwera. – SuperDuperApps

+0

cóż, gospodarz jest kupiony dla nas w innym kraju przez kogoś innego. a portal wsparcia jest w georgi i nie rozumiem tego. i mój kontakt nic nie wie na temat strony internetowej, a kupujący nie może mówić po angielsku: (!!! –

0

edycję wirtualnego hosta:

1. logowanie do serwera.

2. cd/etc/apache2/sites-available/

3. Można edytować domyślne lub web1 lub ... virtual-hoście .conf - plik. Wpisz nano web1.conf (...) i edytuj swój plik.

<VirtualHost *:80> 
    ServerName yoururl.com  
    ServerAdmin [email protected] 
    DocumentRoot /var/www/web1/htdocs/ 
    <Directory /var/www/web1/htdocs/> 
      Options Indexes FollowSymLinks MultiViews 
      AllowOverride all 
      Order allow,deny 
      allow from all 
    </Directory> 
    ErrorLog /var/log/apache2/error.log 
    LogLevel warn 
    CustomLog /var/log/apache2/access.log combined 
    ServerSignature On 
</VirtualHost> 

4. Zatrzymaj Apache2 i uruchomić go ponownie - /etc/init.d/apache2 zatrzymać i /etc/init.d/apache2 zacząć.

5. Prześlij .htaccess do katalogu głównego i go przetestować.

Jeśli używasz Cloudflare, to nie jest opcja w ustawieniach „zawsze używać HTTPS” w ustawień SSL. Można również użyć Forwarding URL działania:

http://yoururl.fqdn/* 
redirected with a 301 response code to 
https://www.yoururl.fqdn/$1 
+0

Thx. Ale jest to serwer współdzielony. –

+0

Mam zaktualizowane pytanie z linkiem do podglądu folderu itp. –

+0

Więc nie masz dostępu przez SSH? Nie możesz połączyć swojego Serwera przez PuTTY czy coś w tym stylu? – Abrapata