Jak usunąć "index.php"
wystające elementy z każdej ścieżki w Codeigniter gdzieś w centrum? Chcę czysty non index.php-fied URLs
?
Jak usunąć "index.php"
wystające elementy z każdej ścieżki w Codeigniter gdzieś w centrum? Chcę czysty non index.php-fied URLs
?
Odpowiedzi:
Jeśli używasz Apache, umieść plik .htaccess w swoim głównym katalogu internetowym, zawierający:
RewriteEngine on
RewriteCond $1 !^(index\.php|[Javascript / CSS / Image root Folder name(s)]|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Tutaj znajduje się kolejna dobra wersja:
RewriteCond $1 !^\/(index\.php|assets|robots\.txt)
Miałem duże problemy z usunięciem pliku index.php. Zasadniczo poniższy .htaccess został przetestowany na kilku serwerach i ogólnie działa:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
<Files "index.php">
AcceptPathInfo On
</Files>
Jeśli nie masz z tym szczęścia, następnym krokiem jest dostosowanie pliku konfiguracyjnego. Wypróbuj inne protokoły URI, np
| 'AUTO' Default - auto detects
| 'PATH_INFO' Uses the PATH_INFO
| 'QUERY_STRING' Uses the QUERY_STRING
| 'REQUEST_URI' Uses the REQUEST_URI
| 'ORIG_PATH_INFO' Uses the ORIG_PATH_INFO
$config['uri_protocol'] = 'ORIG_PATH_INFO';
Jeśli nadal nie masz szczęścia, spróbuj zmienić regułę przepisywania, aby uwzględnić swój podfolder. Jest to często problem, jeśli używasz tymczasowego adresu URL na serwerze deweloperskim itp .:
RewriteRule ^(.*)$ /subofolder1/subfolder2/index.php/$1 [L]
Po prostu pobaw się tymi opcjami, powinno działać. Upewnij się również, że plik indeksu jest ustawiony na:
$config['index_page'] = '';
Powodzenia!
Umieść plik.htaccess w katalogu głównym aplikacji, razem z plikiem index.php. (Sprawdź, czy rozszerzenie htaccess jest poprawne, Bz htaccess.txt nie działa dla mnie.)
I dodaj poniższe reguły do pliku .htaccess,
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Następnie znajdź następujący wiersz w swoim pliku application / config / config.php
$config['index_page'] = 'index.php';
Ustaw zmienną jako pustą, jak poniżej.
$config['index_page'] = '';
To wszystko, na mnie zadziałało.
Jeśli to dalej nie zadziała, spróbuj zastąpić następującą zmienną tymi parametrami („AUTO”, „PATH_INFO”, „QUERY_STRING”, „REQUEST_URI” i „ORIG_PATH_INFO”) jeden po drugim
$config['uri_protocol'] = 'AUTO';
Zajrzyj do system\application\config\config.php
pliku, jest tam zmienna o nazwieindex_page
To powinno wyglądać tak
$config['index_page'] = "index.php";
zmień to na
$config['index_page'] = "";
Następnie, jak wspomniano, musisz również dodać regułę przepisywania do .htaccess
pliku
Uwaga: w CodeIgniter v2 ten plik został przeniesiony z folderu systemowego do application\config\config.php
Wszystkie powyższe metody zawiodły, a potem stwierdziłem, że nie zmieniam AllowOverride None na AllowOverride All w moim wirtualnym pliku hosta w / etc / apache2 / sites-available / default
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride All <---- replace None with All
</Directory>
<Directory /var/www >
Options Indexes FollowSymLinks MultiViews
AllowOverride All <--- replace None with All
Order allow,deny
allow from all
</Directory>
...
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /codeigniter/index.php/$0 [PT,L]
po zmianie RewriteRule. * index.php / $ 0 [PT, L] z nazwą folderu projektu „codeigniter”. działa dla mnie. Dzięki za wsparcie.
Krok 1 => Umieść plik .htaccess w folderze głównym, w którym istnieją foldery aplikacji i systemu.
Krok 2 => Jeśli Twoja ścieżka sieciowa za pomocą podfolderu, takiego jak - twoja_domena.com/project/ - użyj następującego kodu w pliku htaccess
RewriteEngine on
RewriteBase /project/
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /project/index.php/$1 [L]
Jeśli Twoja ścieżka sieciowa zawiera folder główny, taki jak - twoja_domena.com - użyj następującego kodu w pliku htaccess
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Pomyślałem, że mogę dodać
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
byłby .htaccess i pamiętaj, aby edytować zmienną application / config.php w następujący sposób:
zastąpić
$config['uri_protocol'] = “AUTO”
z
$config['uri_protocol'] = “REQUEST_URI”
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
To zdecydowanie musi zadziałać ... spróbować
Upewnij się, że masz włączone mod_rewrite
(ja tego nie zrobiłem).
Umożliwić:
sudo a2enmod rewrite
Zastąp AllowOverride None
równieżAllowOverride All
sudo gedit /etc/apache2/sites-available/default
Wreszcie ...
sudo /etc/init.d/apache2 restart
Mój .htaccess to
RewriteEngine on
RewriteCond $1 !^(index\.php|[assets/css/js/img]|robots\.txt)
RewriteRule ^(.*)$ index.php/$1 [L]
actions
: stackoverflow.com/questions/14419757/…
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
To jest .htaccess dla jednego z moich projektów CI:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)
RewriteRule ^(.*)$ /projectFolder/index.php/$1 [L]
W ostatnim wierszu powinieneś znaleźć to, czego potrzebujesz, chociaż możesz potrzebować '/ projectFolder' 'lub nie, w zależności od konfiguracji twojej struktury folderów. Powodzenia!
Użyj mod_rewrite
zgodnie z instrukcjami w tym samouczku z wiki CI.
Jako plik .htaccess, dobrym rozwiązaniem jest użycie tego, który jest udostępniany przez platformę Kohana :
# Turn on URL rewriting
RewriteEngine On
# Installation directory
RewriteBase /
# Protect hidden files from being viewed
<Files .*>
Order Deny,Allow
Deny From All
</Files>
# Protect application and system files from being viewed
RewriteRule ^(?:application|system)\b.* index.php/$0 [L]
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]
To dobrze przemyślany .htaccess, który po prostu działa.
Istnieją dwa sposoby rozwiązania index.php w ścieżce url dla codeigniter
1: W config / config.php Zmień kod:
$config['index_page'] = 'index.php';
do
$config['index_page'] = '';
2: Utwórz .htacess w ścieżce głównej, jeśli nie został utworzony, skopiuj następujący kod: -
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
Zapisz go, a następnie sprawdź w swojej konfiguracji Apache rewrite_module LUB mod_rewrite jest włączony, jeśli nie, włącz go. (Najlepsze podejście)!
Przetestowałem to na Apache2 na wielu różnych hostingach i działa świetnie.
użyj tego htaccess
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
upewnij się, że masz enabled mod_rewirte
plikphpinfo();
następnie zrób to w config / config.php:
$config['index_url'] = '';
|
| 'AUTO' Default - auto detects
| 'PATH_INFO' Uses the PATH_INFO
| 'QUERY_STRING' Uses the QUERY_STRING
| 'REQUEST_URI' Uses the REQUEST_URI
| 'ORIG_PATH_INFO' Uses the ORIG_PATH_INFO
|
*/
$config['uri_protocol'] = 'AUTO';
jeśli to jeszcze nie działa, spróbuj zmienić na $config['uri_protocol']='AUTO'
jeden z wymienionych w application/config/config.php
pliku wewnętrznym w linii 40/54:
czasami używałem: REQUEST_URI
zamiast AUTO
lub "QUERY_STRING"
dla hostingu goDaddy
Zajrzyj do \application\config\config.php
pliku, jest tam zmienna o nazwieindex_page
To powinno wyglądać tak
$config['index_page'] = "index.php";
zmień to na
$config['index_page'] = "";
Następnie, jak wspomniano, musisz również dodać regułę przepisywania do .htaccess
pliku w następujący sposób:
RewriteEngine on
RewriteCond $1 !^(index\\.php|resources|robots\\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
To działa dla mnie, mam nadzieję, że ty też.
Jeśli jesteś na Linuksie i używasz serwera Apache2, może być konieczne zastąpienie pliku apache2.conf również obok zmian w pliku .htaccess. Znajdź plik konfiguracyjny Apache2 w /etc/apache2/apache2.conf .
Przeszukaj katalog / var / www / Change AllowOverride None -> AllowOverride All
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory
umieść plik .htaccess w swoim głównym katalogu WWW
Jakiekolwiek poprawki, które robisz - jeśli powyższe nie zostaną spełnione - nie zadziała. Zwykle znajduje się w folderze System, powinien znajdować się w katalogu głównym. Twoje zdrowie!
application
katalogu zamiast w katalogu głównym.
Wypróbowałem wiele rozwiązań, ale wymyśliłem to:
DirectoryIndex index.php
RewriteEngine on
RewriteCond $1 !^(index\.php|(.*)\.swf|forums|images|css|downloads|jquery|js|robots \.txt|favicon\.ico)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ./index.php?$1 [L,QSA]
W razie potrzeby spowoduje to usunięcie pliku index.php z adresu URL.
Używam tych linii w .htaccess
pliku; które umieszczam w folderze głównym
RewriteEngine on
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
Wtedy mogę uzyskać dostęp do http://example.com/controller/function/parameter
zamiast http://example.com/index.php/controller/function/parameter
Pomoże Ci to wkleić ten kod do folderu aplikacji w pliku .htacess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
<Files "index.php">
AcceptPathInfo On
</Files>
<IfModule mod_php5.c>
php_value short_open_tag 1
</IfModule>
Ten zrobił mi całą magię:
RewriteEngine on
RewriteBase /
# Hide the application and system directories by redirecting the request to index.php
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
Mam nadzieję, że to pomoże!
Cześć, ten pracował dla mnie
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder/index.php?/$1 [L]
tak dobrze jak to
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder/index.php?/$1 [L]
gdzie folder jest nazwą podfolderu, jeśli ta aplikacja kodująca jest hostowana jako subdomena, np. nazwa_domeny / folder / index.php.
Mam nadzieję, że to działa dla Ciebie. Dzięki.
Skopiuj następujący kod w swoim .htaccess
RewriteEngine on
Options -Indexes
RewriteCond $1 !^(index\.php|assets|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /Foldername of your ci/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
Krok 1 :
Dodaj to w pliku htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
</IfModule>
Krok 2 :
Usuń index.php w konfiguracji codeigniter
$config['base_url'] = '';
$config['index_page'] = '';
Krok 3 :
Zezwalaj na zastępowanie htaccess w konfiguracji Apache (polecenie)
sudo nano /etc/apache2/apache2.conf i edytuj plik i zmień go na
AllowOverride All
dla folderu www
Krok 4 :
Włączono przepisywanie modów Apache (polecenie)
sudo a2enmod przepisać
Krok 5:
Uruchom ponownie Apache (polecenie)
sudo /etc/init.d/apache2 restart