Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [Symfony] Link bez index.php w adresie, Jak właściwie przepisać urle?
perwer
post
Post #1





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 18.11.2009

Ostrzeżenie: (0%)
-----


Witam serdecznie, to mój pierwszy post tym forum i od razu chciałem poprosić o pomoc. Strona postawiona na Symfony dostępna jest w taki sposób:
http://mojastrona.pl/index.php - główna
http://mojastrona.pl/

http://mojastrona.pl/index.php/kategoria/podstrona - podstrony
http://mojastrona.pl/kategoria/podstrona

Pytanie teraz, jak pozbyć się tego cholernego index.php. Czy mogę to jakoś w htaccessie przekierować na opcję bez "index.php"? Szukałem już w oficjalnych tutorialach i dokumentacji i niestety sobie nie poradziłem. Nadal można wejść na obie wersje.

Jeśli ma to jakieś znaczenie, to strona hostowana jest na home.pl

Z góry dzięki za pomoc.
Michał
Go to the top of the page
+Quote Post
janek9
post
Post #2





Grupa: Zarejestrowani
Postów: 121
Pomógł: 2
Dołączył: 22.03.2009

Ostrzeżenie: (0%)
-----


Cytat(perwer @ 18.11.2009, 13:55:54 ) *
Witam serdecznie, to mój pierwszy post tym forum i od razu chciałem poprosić o pomoc. Strona postawiona na Symfony dostępna jest w taki sposób:
http://mojastrona.pl/index.php - główna
http://mojastrona.pl/

http://mojastrona.pl/index.php/kategoria/podstrona - podstrony
http://mojastrona.pl/kategoria/podstrona

Pytanie teraz, jak pozbyć się tego cholernego index.php. Czy mogę to jakoś w htaccessie przekierować na opcję bez "index.php"? Szukałem już w oficjalnych tutorialach i dokumentacji i niestety sobie nie poradziłem. Nadal można wejść na obie wersje.

Jeśli ma to jakieś znaczenie, to strona hostowana jest na home.pl

Z góry dzięki za pomoc.
Michał



a masz ustawiony w pliku settings.yml, w srodowisku produkcyjnym: no_script_name: on ?
Go to the top of the page
+Quote Post
perwer
post
Post #3





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 18.11.2009

Ostrzeżenie: (0%)
-----


Ustawione jest od dawna. Próbowałem normalnie już wszystkiego co udało mi się wyszperać w G. Może w samym .htaccess tkwi błąd?
Wygląda tak:

Cytat
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

# uncomment the following line, if you are having trouble
# getting no_script_name to work
#RewriteBase /

# we skip all files with .something
# comment the following 3 lines to allow periods in routes
#RewriteCond %{REQUEST_URI} \..+$ [OR]
#RewriteCond %{REQUEST_URI} \/forum/.*
#RewriteCond %{REQUEST_URI} !\.html$
#RewriteRule .* - [L]

# we check if the .html version is here (caching)
RewriteRule ^$ index.html [QSA]
RewriteRule ^([^.]+)$ $1.html [QSA]
RewriteCond %{REQUEST_FILENAME} !-f

# no, so we redirect to our front web controller
RewriteRule ^(.*)$ index.php [QSA,L]
Go to the top of the page
+Quote Post
phpion
post
Post #4





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Może trochę po partyzancku, ale powinno zadziałać. Wrzuć na początku index.php:
  1. $uri = $_SERVER['REQUEST_URI'];
  2.  
  3. //echo $uri.'<br>';
  4.  
  5. if (strstr($uri, '/index.php')) {
  6. $uri = str_replace('/index.php', '', $uri);
  7.  
  8. if (!isset($uri[0]) || $uri[0] != '/') {
  9. $uri = '/'.$uri;
  10. }
  11.  
  12. //echo $uri.'<br>';
  13.  
  14. header ('HTTP/1.1 301 Moved Permanently');
  15. header('Location: '.$uri);
  16. }
Go to the top of the page
+Quote Post
perwer
post
Post #5





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 18.11.2009

Ostrzeżenie: (0%)
-----


Teraz przy próbie wejścia na wersję z index.php dostaję:

"500 Internal Error
The server encountered an internal error and could not complete your request" - czyli nie ma przekierowania na wersje "bez".

Wersja bez index.php działa.
Go to the top of the page
+Quote Post
jarre1987
post
Post #6





Grupa: Zarejestrowani
Postów: 41
Pomógł: 3
Dołączył: 27.02.2008

Ostrzeżenie: (0%)
-----


Cytat(perwer @ 19.11.2009, 11:15:52 ) *
Teraz przy próbie wejścia na wersję z index.php dostaję:

"500 Internal Error
The server encountered an internal error and could not complete your request" - czyli nie ma przekierowania na wersje "bez".

Wersja bez index.php działa.


Tutaj jest podobny problem, ale ze bez index.php nie dzialaja zadne linki. Moze byc pomocne..

http://forum.symfony-project.org/index.php...x.php#msg_80370

Ten post edytował jarre1987 19.11.2009, 12:31:25
Go to the top of the page
+Quote Post
perwer
post
Post #7





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 18.11.2009

Ostrzeżenie: (0%)
-----


Już czytałem ten wątek i nic nie dałem rady zmienić. W temacie Symfony jestem laikiem, ale czy te właściwości w settings.yml są właściwe:

Cytat
prod:
.settings:
no_script_name: on
cache: on


"no_script_name" jest podręcznikowo załączone, nie wiem co ma z tym wspólnego "cache". W każdym razie w htaccessie "no_script_name" jest zakomentowane, więc wnioskowałem, że to kwestia htaccessa. Próbowałem bez "#" ale nic to nie dało.
Go to the top of the page
+Quote Post
jarre1987
post
Post #8





Grupa: Zarejestrowani
Postów: 41
Pomógł: 3
Dołączył: 27.02.2008

Ostrzeżenie: (0%)
-----


Znalazłem w necie cos takiego. Napisz jezeli bedzie dzialalo bo sam jestem bardzo ciekawy.

http://www.forum.optymalizacja.com/index.php?showtopic=62516
Go to the top of the page
+Quote Post
perwer
post
Post #9





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 18.11.2009

Ostrzeżenie: (0%)
-----


To musi być to. Rozwiązanie cały czas miałem przed oczami. bo na PIO też szukałem. Niemniej jednak jest ono tylko połowiczne:

Przy wejściu na

http://mojastrona.pl/index.php


Przekierowuje poprawnie na:

http://mojastrona.pl/

Teraz jeszcze muszę jakoś przepisać żeby przy wejściu na:

http://mojastrona.pl/index.php/kategoria/podstrona

Przekierowało na:

http://mojastrona.pl/kategoria/podstrona

W każdym razie jest blisko, ale działa tylko dla głównej. Jakiś pomysł jak zmodyfikować tę regułę z PiO:

Kod
# reguła testująca - jeżeli wywołaniem jest dokładnie ciąg znaków "/index.php" i żaden znak więcej ($ oznacza koniec ciągu, ^ początek)
RewriteCond %{REQUEST_URI} ^\/index.php$
# reguła testująca - sprawdza czy nie ma zapytania ?param1=1&param2=2
RewriteCond %{QUERY_STRING} ^$
# reguła przepisująca
RewriteRule ^(.*)$ http://domena.tld/ [L,R=301]
Go to the top of the page
+Quote Post
jarre1987
post
Post #10





Grupa: Zarejestrowani
Postów: 41
Pomógł: 3
Dołączył: 27.02.2008

Ostrzeżenie: (0%)
-----


Sory ze znowu zapodaje linka, ale nie chce mi sie wklejac tego tekstu. Wydaje mi sie ze trzeba ustawic to w <Directory>. Ale to tylko moje domysly.

http://www.jtz.org.pl/Inne/Apache/Mod/core.html#directory
Go to the top of the page
+Quote Post
perwer
post
Post #11





Grupa: Zarejestrowani
Postów: 6
Pomógł: 0
Dołączył: 18.11.2009

Ostrzeżenie: (0%)
-----


Dobry link nie jest zły, ale z tego nic nie rozumiem. Ja to humanista jestem ;]
Go to the top of the page
+Quote Post
jarre1987
post
Post #12





Grupa: Zarejestrowani
Postów: 41
Pomógł: 3
Dołączył: 27.02.2008

Ostrzeżenie: (0%)
-----


Cytat(perwer @ 19.11.2009, 16:06:43 ) *
Dobry link nie jest zły, ale z tego nic nie rozumiem. Ja to humanista jestem ;]


Ja tez za dobry nie jestem w tym. Poszukaj w dokumentacji apache o mod_rewrite, szczegolnie RewriteCond i RewriteRule.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 16.09.2025 - 11:01