2013-09-06 14 views
5

Jak ukryć zmianę adresu URL podczas korzystania z przeróbki apache? Szukałem godzin w tej sprawie i postanowiłem przyjechać tutaj, aby znaleźć odpowiedź. Więc każda pomoc/wskazówki byłyby bardzo cenne!Jak ukryć zmianę adresu URL podczas korzystania z przeróbki apache?

Teraz używam:

RewriteRule ^/Page/(.*)$ http://domain.com/page.cfm?pagevar=$1 [NC,L] 

Problemem jest to, kiedy idziesz przejdź do http://domain.com/Page/abc123 to działa. ALE zmienia adres URL przeglądarki na http://domain.com/page.cfm?pagevar=abc123,

Chcę, aby wykonała tę samą akcję, ale jako adres URL wyświetl http://domain.com/Page/abc123.

Proszę, wszelkie informacje na ten temat będą bardzo mile widziane! Jeszcze raz dziękuję.

+0

[Nie zapomnij spojrzeć na to, jak nagrodzić użytkowników, którzy ci pomogli, ulepsz swoje pytanie w razie potrzeby i inne przydatne wskazówki, jak najlepiej korzystać z tej witryny.] (Http://stackoverflow.com/about) – Prix

Odpowiedz

7

Pierwsza reguła będzie przekierować brzydki URL do ładnego formacie URL.

Druga zasada wewnętrznie przekieruje ją z powrotem, ponieważ użytkownik nie zobaczy brzydkiego adresu URL.

Options +FollowSymLinks -MultiViews 

RewriteEngine On 
RewriteBase/

# Redirect /page.cfm?pagevar=abc123 to /Page/abc123 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+page\.cfm\?pagevar=([^&\s]+) [NC] 
RewriteRule^/Page/%1? [R=301,L] 

# Internally forward /Page/abc123 to /page.cfm?pagevar=abc123 
RewriteRule ^Page/(.*)/?$ /page.cfm?pagevar=$1 [QSA,NC,L] 

Powyższe zasady mają być stosowane na .htaccess plików i zakłada page.cfm jest w katalogu głównym folderze domeny wraz z plikiem .htaccess.

Zgodnie z przykładami.

+0

+1, możesz chcieć dodać flagę 'QSA' w ostatnim' RewriteRule' – anubhava

+0

@anubhava, dziękuję, rozważałem to, ale to ma zastosowanie tylko wtedy, gdy faktycznie chce, aby wszystkie ciągi zapytań były przenoszone do nowego formatu URL. – Prix

+0

Zgadzam się, ale nigdy nie znasz tych wymagań dotyczących przepisywania. Ale tak OP nie wspomniał o żadnym takim wymogu. – anubhava

0

Musisz pozbyć się części docelowej reguły z http://domain.com. Kiedy trzeba, że ​​to implicity przekierowuje przeglądarkę zamiast wewnętrznie przepisanie:

RewriteRule ^/Page/(.*)$ /page.cfm?pagevar=$1 [NC,L] 
Powiązane problemy