2011-12-21 15 views
8

Próbuję utworzyć skracacz adresów URL i chcę móc pobierać dowolne znaki bezpośrednio po domenie i przekazywać je jako zmienny adres URL. Tak na przykładPrzekierowuję cały ruch do pliku index.php za pomocą mod_rewrite

staną

Oto co mam do mod_rewrite teraz, ale wciąż otrzymuję 400 Bad Request:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*) index.php?url=$1 [L,QSA] 
+1

Zajrzyj do pliku 'error.log' z faktycznym powodem błędu. W przeciwnym razie skonfiguruj 'RewriteLog' – mario

+1

możliwy duplikat [Simple Mod Rewrite] (http://stackoverflow.com/questions/7093190/simple-mod-rewrite) – mario

+0

-1: Wymagane jest więcej debugowania; zobacz komentarz @ mario. –

Odpowiedz

11

spróbować wymienić ^(.*) z ^(.*)$

RewriteRule ^(.*)$ index.php?url=$1 [L,QSA] 

EDIT: Spróbuj wymienić index.php z /index.php

RewriteRule ^(.*)$ /index.php?url=$1 [L,QSA] 
+0

Dałem mu szansę, ale wciąż otrzymuję 400 złych wniosków. Przeglądając teraz dzienniki, ale nie mogę znaleźć niczego wartościowego podczas gdy – bswinnerton

+1

@bswinnerton: Spróbuj dodać '/' before' index.php'. Sprawdź moją zaktualizowaną odpowiedź. –

+0

OK, więc już nie otrzymuję błędu, ale nie przekierowuję go do adresu url = asdf po wpisaniu/asdf =/ – bswinnerton

0

Wypróbuj go bez użycia za pomocą RewriteCond.

+0

Jeśli skomentuję RewriteCond, nadal otrzymuję błąd 400. – bswinnerton

+2

Te dwie linie "RewriteCond" mają zapewnić, że pliki i foldery, które istnieją, nie zostaną przepisane. Na przykład 'http: // example.com/images/logo.png' nie zostanie przepisane, jeśli ten obraz istnieje. –

+0

@Rocket Dobrze wiedzieć na przyszłość. Pracowałem tylko z informacjami, które otrzymałem. – PseudoNinja

-1

wyboru pod modułów Apache i upewnij się, że tekst poprawiony moduł jest włączony. Miałem podobny problem i został rozwiązany przez włączenie modułu ponownego pisania.

+0

jaki jest pożytek z odpowiedzi na super stare pytanie **, na które już udzielono odpowiedzi **? –

1

ByTheWay Nie zapomnij włączyć mod rewrite, w Apache na Ubuntu

sudo a2enmod rewrite 

a następnie ponownie apache2

sudo /etc/init.d/apache2 restart 

edit: to jest stare pytanie, które pomogło mi ale przegrałem godzin testowanie pliku apache2.conf po jednej stronie i pliku .htaccess po drugiej stronie i nadal bez światła.

0

przepisać wszystkie żądania do /index.php, można użyć:

RewriteEngine on 


RewriteCond %{REQUEST_URI} !^/index.php$ 
RewriteRule ^(.+)$ /index.php?url=$1 [NC,L] 

RewriteCondition RewriteCond %{REQUEST_URI} !^/index.php$ jest ważna, gdyż wyklucza przeznaczenia przepisywania jesteśmy przepisywanie do błędu i zapobiega nieskończonej pętli.

Powiązane problemy