Strona 1 z 1

Apache2 - mod rewrite i wyrażenia regularne

: 22 stycznia 2013, 14:38
autor: sethiel
Chciałbym mieć taki efekt aby po wpisaniu w przeglądarkę: Czyli, cokolwiek się nie wpisze przekierowuje na stronę główną, chyba, że jest to plik jpg, to wtedy mod_rewrite pozostawia nas tam gdzie był.

Już definicję wirtualki i .htacces przewałkowałem bilion razy i nic:

Kod: Zaznacz cały

<VirtualHost *:80>
       DocumentRoot /virtual/www/grafiki
       ServerName grafiki.strona.pl
       ServerAlias  www.grafiki.strona.pl
       ServerSignature Off
       LogLevel debug
       Alias /grafiki /virtual/www/grafiki       
       <Directory /*/>
              RewriteEngine on
              RewriteRule .[^jpg] http://www.strona.pl/
              #RewriteRule .*^jpg .*^jpg
              #RewriteRule .*[^jpg] http://www.strona.pl/
              #RewriteRule ^ http://www.strona.pl/
        </Directory>
</VirtualHost>

.htaccess

Kod: Zaznacz cały

# AddDefaultCharset     UTF-8
AddType text/x-component .htc

<IfModule mod_php4.c>
  php_flag      display_errors  Off
  php_flag      log_errors      On
  php_value     error_log       logs/errors
  php_value     upload_max_filesize     5M
  php_value     post_max_size   6M
</IfModule>

<IfModule mod_php5.c>
  php_flag      display_errors  Off
  php_flag      log_errors      On
  php_value     error_log       logs/errors
  php_value     upload_max_filesize     5M
  php_value     post_max_size   6M
  php_value     register_globals        On
</IfModule>

<FilesMatch "(\.inc|\~)$">
  Order allow,deny
  Deny from all
</FilesMatch>

Order deny,allow
Allow from all


: 22 stycznia 2013, 15:57
autor: LordRuthwen
Co mówią logi?

: 22 stycznia 2013, 16:29
autor: sethiel
Logi tutaj nie pomogą - trzeba znać składnię i umieć ją zastosować.
A ja jedno i drugie na czuja lub z pomocą GoogleL

Kod: Zaznacz cały

"mod_rewrite examples negation"
i nie wychodzi, bo albo działa globalnie (czyli przekierowuje wszystko jak leci), albo nie działa.

Edycja:
Znajomy mi rozwiązanie podrzucił.

Kod: Zaznacz cały

 RewriteRule \.(jpg|png)$ - [L]
  RewriteRule .* [url=http://www.ssisa.pl/]http://www.strona.pl/[/URL]
\. - czyli kropka, bo jest escape kropki (sama kropka bez \ oznacza dowolny pojedynczy znak)
() - to się stosuje albo do robienia grup Regex albo gdy musisz użyć wartości logicznych, czyli | &
| - logiczny or
$ - czyli sprawdzaj Regexa do samego końca (czyli .jpg ma się znaleźć na końcu wpisu, nie nigdzie pośrodku)
- oznacza, żeby nigdzie tego nie przekierowywał, tylko pozostał na tym co jest [L] - Last, czyli jeśli spełni tę regułę to zakończ na niej.
I kolejna reguła już wiadomo, przemiel wszystko co nie wpadło w pierwszą regułę kolejną regułą.