Skocz do zawartości

[htaccess] Jak zrobić wyjątek


MaxGaming

Rekomendowane odpowiedzi

Mam taką treść pliku .htaccess

Options -Indexes
AddType application/x-httpd-php .html
RewriteEngine on
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?goto=$1 [L]

 

W index.php mam całe przetwarzanie żądania. Teraz jak zrobić aby nie dało się wejść np. www.strona.pl/obrazek.php a dało się www.strona.pl/obrazek?

Jeżeli usuwa linie:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

Jest prawie idealnie, ale nie działa wtedy też index.php. Chce aby żadnego pliku nie dało się wczytać(ale też tylko php i html) tylko index.php.

Tylko php i html bo chce mieć wciąz obrazki itp. ale nie chce by ktoś wczytywał "ręcznie pliki" tylko przez moje przypisane adresy w index.php.

Przykład takiego index.php:

<?php
if(isset($_GET['goto']))
{
    switch (strtolower($_GET['goto']))
    {
        case 'strona_glowna':
            require($_SERVER['DOCUMENT_ROOT'].'/home.php');
            break;

        case 'wyloguj':
            require($_SERVER['DOCUMENT_ROOT'].'/logout.php');
            break;

        default:
            require($_SERVER['DOCUMENT_ROOT'].'/bad_url.php');
            break;
    }
}else{
    require($_SERVER['DOCUMENT_ROOT'].'/home.php');
}
?>

 

Aktualnie mogę wejść jako "/wyloguj" ale mogę też(a tego nie chce)"logout.php". To ma szczególne znaczenie dlatego że są także skrypty php które nie są samodzielną stroną a wklejam je require a także dlatego że chce zachować spójność i estetykę.

 

Podsumowanie: chce wyłączyć wszystkie pliki html i php z wyłączeniem index.php.

Odnośnik do komentarza
Udostępnij na innych stronach

Zamiast bawić się w .htaccessie ja bym w public_html (zakładam, że tak się nazywa document root) zostawił tylko index.php i pozostałe statyczne zasoby (obrazki, css, fonty itp.) a kod strony przeniósł wyżej.

Np. taka struktura:

/protected - wszystkie phpy
/public_html
- assets/ - css, gfx itp.
- index.php

 

Z poziomu przeglądarki dostęp będzie tylko do public_html a w index.php możesz ścieżką wyjść do protected.

$appPath = $_SERVER['DOCUMENT_ROOT'].'/../protected/';
...
require($appPath.'home.php');

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

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

 

Wszystko trafi na index.php. Jak wpiszesz strona.pl/obrazek to też się wczyta index.php i musisz tam przetworzyć dane.

Odnośnik do komentarza
Udostępnij na innych stronach

Options -Indexes
AddType application/x-httpd-php .html
RewriteEngine on
RewriteCond %{HTTPS} on
RewriteRule (.*) http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?goto=$1 [L]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

Nie bardzo wiem jak to połączyć z resztą :/ Tak nie działa. I czy można zastosować tylko dla plików php i html a reszta żeby z serwera była wczytywana(głównie chodzi mi o zdjęcia i zipy)?

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...