• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

./htaccess i CodeIgniter

Object Storage Arubacloud
0 głosów
707 wizyt
pytanie zadane 26 czerwca 2015 w PHP przez Kazuhiro Użytkownik (910 p.)

Witajcie. Mam problem z ./htaccess. Plik znajduje się domyślnie w katalogu application. Podmieniłem jego zawartość na podaną w manualu

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

Przy próbie wprowazena oadreu bez index.php, pojaia się piękna strona not found. Dlaczego tak się dzieje?

3 odpowiedzi

+1 głos
odpowiedź 26 czerwca 2015 przez Comandeer Guru (601,590 p.)

A jest jakiś plik .htaccess w głównym katalogu? Bo ten w gruncie rzeczy tam przekierowuje jedynie.

komentarz 26 czerwca 2015 przez Kazuhiro Użytkownik (910 p.)
Nie ma. Utworzyłem co prawda nowy plik w katalogu głównym, ale nie rozwiązało to problemu. Czy poza tą treścią powinno być coś jeszcze w tym pliku?

Działający adres strony:

http://localhost/strona/index.php/welcome

Adres strony, który chcę, zeby działał:

http://localhost/strona/welcome
komentarz 26 czerwca 2015 przez Comandeer Guru (601,590 p.)

Spróbowałbym z takim plikiem .htaccess

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>

    RewriteEngine On

    # Redirect Trailing Slashes…
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Handle Front Controller…
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

 

komentarz 26 czerwca 2015 przez Kazuhiro Użytkownik (910 p.)
Nie działa. Podmieniłem oba pliki (w application i w katalogu głównym)...

Jeśli to w czyms pomoże to dodam, że korzstam z Minta :)
komentarz 26 czerwca 2015 przez Comandeer Guru (601,590 p.)
edycja 26 czerwca 2015 przez Comandeer

Chodzi o ten w głównym.

A taka wersja?

<IfModule mod_rewrite.c>
    <IfModule mod_negotiation.c>
        Options -MultiViews
    </IfModule>
 
    RewriteEngine On
 
    # Redirect Trailing Slashes…
    RewriteRule ^(.*)/$ /$1 [L,R=301]
 
    # Handle Front Controller…
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php/%{REQUEST_FILENAME} [L]
</IfModule>

 

komentarz 26 czerwca 2015 przez efiku Szeryf (75,160 p.)
edycja 26 czerwca 2015 przez efiku
1. a2enmod rewrite
2. Sprawdź czy w vhoscie masz AllowOverride all w sekcji
komentarz 26 czerwca 2015 przez Kazuhiro Użytkownik (910 p.)
Jak to srawdzić?
komentarz 26 czerwca 2015 przez Comandeer Guru (601,590 p.)

Pogrzeb w plikach konfiguracyjnych Apache pod kątem tej frazy (w /etc/apache2)

komentarz 26 czerwca 2015 przez efiku Szeryf (75,160 p.)
Dokładnie. Szukaj w sites-enabled.
komentarz 26 czerwca 2015 przez Kazuhiro Użytkownik (910 p.)
edycja 26 czerwca 2015 przez Kazuhiro
W apache.conf miałem AllowOverride none. zamieniłem te wartości na all, ale nic to nie dało.
komentarz 26 czerwca 2015 przez efiku Szeryf (75,160 p.)
edycja 26 czerwca 2015 przez efiku
Szukasz w sites-enabled . Jest tam jakis plik default.
Możliwe, że nawet zawiera taka konfigurację:
NameVirtualHost *

        ServerAdmin webmaster@localhost

        DocumentRoot /var/www/
        
                Options FollowSymLinks
                AllowOverride None
        
        
                Options Indexes FollowSymLinks MultiViews
                AllowOverride None
                Order allow,deny
                allow from all
                # This directive allows us to have apache2's default start page
                # in /apache2-default/, but still have / go to the right place
                RedirectMatch ^/$ /apache2-default/
        

        ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
        
                AllowOverride None
                Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
                Order allow,deny
                Allow from all
        

        ErrorLog /var/log/apache2/error.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access.log combined
        ServerSignature On

    Alias /doc/ "/usr/share/doc/"
    
        Options Indexes MultiViews FollowSymLinks
        AllowOverride None
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    



Jak masz tam directory na /var/www to zmien AllowOverride z none na all
EDIT: Możesz wrzucić na pastebina co masz w pliku /etc/apache2/sites-enabled/000-def[...] ? trzeba jeszcze zrobić service apache2 restart ;)
komentarz 26 czerwca 2015 przez Kazuhiro Użytkownik (910 p.)

Mój plik default :

  GNU nano 2.2.6                                                     Plik: 000-default.conf                                                                                                                     

<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Restart czywiście robiłem :)

komentarz 26 czerwca 2015 przez efiku Szeryf (75,160 p.)

Dopisz tam pod DocumentRoot
EDIT: Znów mi się CKedytor sypie..

    <Directory "/var/www/html/">
        AllowOverride all
        Require all granted
    </Directory>

komentarz 26 czerwca 2015 przez HaKIM Szeryf (87,590 p.)
Efik, jak będziesz miał kiedyś wolne, nagraj poradnik o Symfony. Bo te, co teraz są ssą.

Te po polsku. Znaczy ja nie lubię tego jak je prowadzą. :)
komentarz 26 czerwca 2015 przez efiku Szeryf (75,160 p.)
A może nie umiesz angielskiego i dlatego ssą? ;d Wszystko tam jest łopatologicznie powiedziane. Średnio SF współpracuje na windowsie. Wszystkie linki już podałem.

Wracając do tematu, dodanie <Directory> ( to co napisałem wyżej ) powinno załatwić sprawę tych htaccesów.
komentarz 26 czerwca 2015 przez HaKIM Szeryf (87,590 p.)
Z dokumentacją Codeigniter sobie radze. Więc wątpie. :)

To chyba nie jest framework dla mnie. : c
0 głosów
odpowiedź 26 czerwca 2015 przez HaKIM Szeryf (87,590 p.)
edycja 26 czerwca 2015 przez HaKIM

W głównym folderze:

htdocs/yourfolder/.htaccess

<IfModule mod_rewrite.c>
  RewriteEngine On
  # !IMPORTANT! Set your RewriteBase here and don't forget trailing and leading
  #  slashes.
  # If your page resides at
  #  http://www.example.com/mypage/test1
  # then use
  # RewriteBase /mypage/test1/
  
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>
 
<IfModule !mod_rewrite.c>
  # If we don't have mod_rewrite installed, all 404's
  # can be sent to index.php, and everything works as normal.
  # Submitted by: ElliotHaughin
 
  ErrorDocument 404 /index.php
</IfModule>

W config:

$config['base_url'] = 'http://localhost/nazwaTwojegoFolderu/';
$config['index_page'] = '';

W routes: [To już dobrowolnie]

$route['translate_uri_dashes'] = TRUE;//Zamienia _ na - w linkach url

Jeżeli nazwę folderu, gdzie masz pliki, masz z małej, wpisuj:

http://localhost/beautiful/ 

nie http://localhost/Beautiful/

Zobacz czy działa. :)

Tak btw. przez Ciebie coraz bardziej kocham CodeIgniter za prostotę. Z Symfony nawet nie mogę zacząć, szukałem views jaki leci do app_dev.php i nic. : D

komentarz 26 czerwca 2015 przez CzlowiekSkrypt Nałogowiec (26,340 p.)
Z innej beczki - znacie jakiś fajny tutorial dotyczący CodeIgniter? :)
komentarz 26 czerwca 2015 przez Kazuhiro Użytkownik (910 p.)
Mają fajny manual, w większości jest nawet przetłumaczony na język polski:

http://podrecznik.codeigniter.org.pl/
komentarz 26 czerwca 2015 przez Kazuhiro Użytkownik (910 p.)
O który plik konfiguracyjny Ci chodzi?

Mnie najbardziej zależało na modelu MVC, zwiększeniu przenośności witryny i drobnym ułatwieniom w projektowaniu aplikacji. Code Igniter było więc oczywistym wyborem :)
komentarz 26 czerwca 2015 przez HaKIM Szeryf (87,590 p.)

Scieżka do config.php:

twojaNazwa/application/config/config.php

0 głosów
odpowiedź 26 czerwca 2015 przez Kazuhiro Użytkownik (910 p.)

Żeby trochę uporządkować wątek piszę oddzielną wiadomość. Po pierwsze w pliku default.conf mam tylko:

Mój plik default :

  GNU nano 2.2.6                                                     Plik: 000-default.conf                                                                                                                     

<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

Restart czywiście robiłem :)

Po drugie - o jaki plik konfiguracyjny chodzi? apache2.conf, default.conf?

komentarz 26 czerwca 2015 przez HaKIM Szeryf (87,590 p.)
Mam takie pytanko, bo już się pomotałem, nadal masz problem z .htaccess czy już o czymś innym piszesz? Pierwszy raz widze taki plik na oczy, a poprawnie skonfigurowałem .htaccess.
komentarz 26 czerwca 2015 przez Kazuhiro Użytkownik (910 p.)
Tak. cały czas piszę o tym samym. To ejst plik 000-default.conf
komentarz 26 czerwca 2015 przez efiku Szeryf (75,160 p.)

Kazuhiro, mi też nie chciał działać htaccess po przeniesieniu apki z SF na vps do syntaxa.
Problem rozwiązuje się ( jak wyżej napisałem ) poprzez dodanie AllowOverride all. 

Nasz plik 000-default: Podobnie jak twój tylko jest DocumentRoot /var/www ( ale ty masz jeszcze do html więc apka musi być w katalogu html )

Aby mi działał htaccess musiałem zrobić plik konfiguracyjny: http://pastebin.com/RXcH8hm9
U Ciebie do pliku default wystarczy dodać :
    <Directory "/var/www/html/">
        AllowOverride all
        Require all granted
    </Directory>

 

komentarz 26 czerwca 2015 przez Kazuhiro Użytkownik (910 p.)

Mój plik po modyfikacji:

<VirtualHost *:80>
        # The ServerName directive sets the request scheme, hostname and port that
        # the server uses to identify itself. This is used when creating
        # redirection URLs. In the context of virtual hosts, the ServerName
        # specifies what hostname must appear in the request's Host: header to
        # match this virtual host. For the default virtual host (this file) this
        # value is not decisive as it is used as a last resort host regardless.
        # However, you must set it for any further virtual host explicitly.
        #ServerName www.example.com

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html
         <Directory "/var/www/html/">
                AllowOverride all
                Require all granted
         </Directory>

        # Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
        # error, crit, alert, emerg.
        # It is also possible to configure the loglevel for particular
        # modules, e.g.
        #LogLevel info ssl:warn

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        # For most configuration files from conf-available/, which are
        # enabled or disabled at a global level, it is possible to
        # include a line for only one particular virtual host. For example the
        # following line enables the CGI configuration for this host only
        # after it has been globally disabled with "a2disconf".
        #Include conf-available/serve-cgi-bin.conf
</VirtualHost>

# vim: syntax=apache ts=4 sw=4 sts=4 sr noet

 

Ściągnąłem też dla testu projekt MZ ze strony. Oczywiście musiałem zmienić chmod na 777, ale projekt w ogóle nie chce się uruchomićnawet przyodwoływaniu się do plików html.

Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator at webmaster@localhost to inform them of the time this error occurred, and the actions you performed just before this error.

More information about this error may be available in the server error log.

komentarz 26 czerwca 2015 przez efiku Szeryf (75,160 p.)
edycja 26 czerwca 2015 przez efiku
Nie skopałeś czegoś? ;)
Bo ja zrobiłem dokładnie tak:
1. odapliłem vagranta i zmodyfikowałem 000-default na Twój z moją zmianą.
2. zrestartowałem apache
3. Przeniosłem projekt do /var/www/html  
4. Screen z przegladarki : http://prntscr.com/7ljpmw
5. Screen z htaccesa: http://prntscr.com/7ljq19
EDIT: Nic więcej nie robiłem niż masz w tych krokach ;)
:)
komentarz 26 czerwca 2015 przez Kazuhiro Użytkownik (910 p.)

Robiłem to co kazaliście. Możesz pokazać pełną treść swojego pliku default i apache2.conf?

Teraz serwer zaczął reagować na pliki .htaccess, chociaż nie tak, jakbym sobie tego życzył. Kiedy wpisuję

RewriteEngine on
RewriteRule plik plik.php

Mam Several Internet Error, bez względu na to jaki plik próbuję uruchomić. Kiedy z kolei wpisuję tak:

#Własna strona błędu 400
ErrorDocument 400 plik.php

#Własna strona błędu 401
ErrorDocument 401 plik.php

#Własna strona błędu 403
ErrorDocument 403 plik.php

#Własna strona błędu 404
ErrorDocument 404 plik.php

#Własna strona błędu 500
ErrorDocument 500 plik.php

 

To plik.php uruchamia się normalnie, jednak przy wpisaniu błędnego adresu drukuje mi po prostu napis "plik.php".

komentarz 26 czerwca 2015 przez efiku Szeryf (75,160 p.)
Moja zawartosc w default jest taka sama jak plik ktory zalaczyles wyzej... A apache.conf nie ruszalem (nic nie mowilem o apache2.conf by go ruszac ) Ps: jezlei ja zrobilem to w 3 krokach to zastanow sie co ty zmieniales jeszcze poza tym ;-)
komentarz 26 czerwca 2015 przez Kazuhiro Użytkownik (910 p.)
edycja 26 czerwca 2015 przez Kazuhiro

Przestuje Twój plik .htaccess, ale nie za bardzo wiem jak, tzn. jaki adres na jaki powinien zamienić? W testowym folderze mam tylko plik.php. W pliku tym umieściłem taki oto kod:

<?php
	$a = array(
		'hello' => 'hello world',
		'fajny' => 'to jest fajny napis'
		);
		$b = $_GET['b'];
		echo $a[$b];	
?>

 

Podobne pytania

+1 głos
3 odpowiedzi 522 wizyt
pytanie zadane 11 października 2016 w PHP przez Adux Obywatel (1,740 p.)
0 głosów
1 odpowiedź 200 wizyt
pytanie zadane 23 lipca 2016 w PHP przez DawidxD Użytkownik (810 p.)
0 głosów
1 odpowiedź 312 wizyt
pytanie zadane 6 sierpnia 2017 w Hostingi, domeny, usługi przez Maikel11 Początkujący (470 p.)

92,579 zapytań

141,429 odpowiedzi

319,657 komentarzy

61,963 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...