Làm cách nào để loại bỏ phần "index.php"
nhô ra trong mọi đường dẫn trong codeigniter ở đâu đó ở trung tâm? Tôi muốn sạch sẽ không index.php-fied URLs
?
Làm cách nào để loại bỏ phần "index.php"
nhô ra trong mọi đường dẫn trong codeigniter ở đâu đó ở trung tâm? Tôi muốn sạch sẽ không index.php-fied URLs
?
Câu trả lời:
Nếu bạn đang sử dụng Apache, hãy đặt tệp .htaccess vào thư mục web gốc của bạn có chứa thông tin sau:
RewriteEngine on
RewriteCond $1 !^(index\.php|[Javascript / CSS / Image root Folder name(s)]|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Một phiên bản tốt khác nằm ở đây:
RewriteCond $1 !^\/(index\.php|assets|robots\.txt)
Tôi đã gặp một số vấn đề lớn với việc xóa index.php. Theo quy tắc chung, .htaccess dưới đây đã được thử nghiệm trên một số máy chủ và thường hoạt động:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
<Files "index.php">
AcceptPathInfo On
</Files>
Nếu bạn không gặp may với điều đó thì bước tiếp theo là điều chỉnh tệp cấu hình của bạn. Hãy thử một số giao thức URI khác, ví dụ:
| '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';
Nếu bạn vẫn không gặp may, hãy thử thay đổi quy tắc viết lại để bao gồm thư mục con của bạn. Đây thường là vấn đề nếu bạn sử dụng URL tạm thời trên máy chủ nhà phát triển, v.v.:
RewriteRule ^(.*)$ /subofolder1/subfolder2/index.php/$1 [L]
Chỉ cần thử với những tùy chọn này, một cái sẽ hoạt động. Ngoài ra, hãy đảm bảo rằng tệp chỉ mục của bạn được đặt thành:
$config['index_page'] = '';
Chúc may mắn!
Có tệp the.htaccess trong thư mục gốc của ứng dụng, cùng với tệp index.php. (Kiểm tra xem phần mở rộng htaccess có đúng không, Bz htaccess.txt không hoạt động đối với tôi.)
Và Thêm các quy tắc sau vào tệp .htaccess,
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
Sau đó tìm dòng sau trong tệp ứng dụng / config / config.php của bạn
$config['index_page'] = 'index.php';
Đặt biến trống như bên dưới.
$config['index_page'] = '';
Đó là nó, nó đã làm việc cho tôi.
Nếu nó không hoạt động nữa, hãy thử thay thế biến sau bằng các tham số này ('AUTO', 'PATH_INFO', 'QUERY_STRING', 'REQUEST_URI' và 'ORIG_PATH_INFO') lần lượt
$config['uri_protocol'] = 'AUTO';
Hãy xem trong system\application\config\config.php
tệp, có một biến có tênindex_page
Nó sẽ giống như thế này
$config['index_page'] = "index.php";
thay đổi nó thành
$config['index_page'] = "";
Sau đó, như đã đề cập, bạn cũng cần thêm quy tắc ghi lại vào .htaccess
tệp
Lưu ý: trong CodeIgniter v2 tệp này đã được chuyển ra khỏi thư mục hệ thống đến application\config\config.php
Tất cả các phương pháp trên đều không thành công đối với tôi và sau đó tôi thấy rằng tôi không thay đổi AllowOverride Không thành AllowOverride Tất cả trong tệp máy chủ ảo của tôi tại / 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]
sau khi thay đổi RewriteRule. * index.php / $ 0 [PT, L] với tên thư mục dự án "codeigniter" .its làm việc cho tôi. Cảm ơn các bạn đã ủng hộ.
Bước 1 => Đặt tệp .htaccess của bạn vào thư mục gốc, nơi tồn tại các thư mục ứng dụng và hệ thống.
Bước 2 => Nếu đường dẫn web của bạn sử dụng thư mục con như - yourdomain.com/project/ - thì hãy sử dụng mã sau trong tệp htaccess
RewriteEngine on
RewriteBase /project/
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /project/index.php/$1 [L]
Nếu đường dẫn web của bạn sử dụng thư mục gốc như - yourdomain.com - thì hãy sử dụng mã sau trong tệp htaccess
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
Chỉ nghĩ rằng tôi có thể thêm
RewriteEngine on
RewriteCond $1 !^(index\.php|resources|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
sẽ là .htaccess và hãy nhớ chỉnh sửa biến application / config.php của bạn theo cách sau:
thay thế
$config['uri_protocol'] = “AUTO”
với
$config['uri_protocol'] = “REQUEST_URI”
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [PT,L]
Điều này chắc chắn phải hoạt động .. hãy thử
Đảm bảo bạn đã bật mod_rewrite
(tôi chưa bật).
Để kích hoạt:
sudo a2enmod rewrite
Ngoài ra, hãy thay thế AllowOverride None
bằngAllowOverride All
sudo gedit /etc/apache2/sites-available/default
Cuối cùng ...
sudo /etc/init.d/apache2 restart
.Htaccess của tôi là
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]
Đây là một .htaccess cho một trong những dự án CI của tôi:
RewriteEngine on
RewriteCond $1 !^(index\.php|images|css|js|robots\.txt)
RewriteRule ^(.*)$ /projectFolder/index.php/$1 [L]
Dòng cuối cùng sẽ cung cấp cho bạn những gì bạn cần, mặc dù bạn có thể cần hoặc không cần '/ projectFolder' tùy thuộc vào cách cấu trúc thư mục của bạn được thiết lập. Chúc may mắn!
Sử dụng mod_rewrite
theo hướng dẫn trong hướng dẫn này từ CI wiki.
Dưới dạng tệp .htaccess, một tùy chọn tốt là sử dụng tệp do Kohana Framework cung cấp :
# 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]
Đó là một truy cập .htaccess được suy nghĩ kỹ lưỡng và hoạt động.
Có hai cách để giải quyết index.php trong đường dẫn url cho codeigniter
1: Trong config / config.php Thay đổi mã:
$config['index_page'] = 'index.php';
đến
$config['index_page'] = '';
2: Tạo .htacess trong đường dẫn gốc nếu chưa được tạo, Sao chép đoạn mã sau: -
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>
Lưu nó và sau đó kiểm tra cấu hình Apache của bạn rewrite_module HOẶC mod_rewrite đã được Bật. Nếu không, hãy bật. (Phương pháp tốt nhất)!
Tôi đã thử nghiệm điều này trên apache2 trên nhiều hosting khác nhau và nó hoạt động rất tốt.
sử dụng htaccess này
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php/$1 [L]
hãy chắc chắn rằng bạn có enabled mod_rewirte
với mộtphpinfo();
sau đó thực hiện việc này trong 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';
nếu nó vẫn chưa hoạt động, hãy thử thay đổi $config['uri_protocol']='AUTO'
thành một trong các application/config/config.php
tệp bên trong được liệt kê trên dòng 40/54:
đôi khi tôi đã sử dụng: REQUEST_URI
thay vì AUTO
hoặc "QUERY_STRING"
cho các lưu trữ goDaddy
Tìm trong \application\config\config.php
tệp, có một biến có tênindex_page
Nó sẽ giống như thế này
$config['index_page'] = "index.php";
thay đổi nó thành
$config['index_page'] = "";
Sau đó, như đã đề cập, bạn cũng cần thêm quy tắc ghi lại vào .htaccess
tệp như sau:
RewriteEngine on
RewriteCond $1 !^(index\\.php|resources|robots\\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
Nó làm việc cho tôi, hy vọng bạn cũng vậy.
Nếu bạn đang sử dụng linux và sử dụng máy chủ apache2 thì chúng tôi có thể cần ghi đè tệp apache2.conf bên cạnh các thay đổi trên tệp .htaccess. Tìm tệp cấu hình apache2 trên /etc/apache2/apache2.conf .
Thư mục tìm kiếm / var / www / Change AllowOverride Không có -> AllowOverride Tất cả
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory
đặt tệp .htaccess trong thư mục web gốc của bạn
Bất kỳ điều chỉnh nào bạn làm - nếu điều trên không được đáp ứng - nó sẽ không hoạt động. Thường thì nó nằm trong thư mục System, nó phải nằm trong thư mục gốc. Chúc mừng!
application
thư mục thay vì gốc.
Tôi đã thử nhiều giải pháp nhưng giải pháp tôi nghĩ ra là:
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]
Điều này sẽ xóa index.php khỏi url theo yêu cầu.
Tôi sử dụng những dòng này trong .htaccess
hồ sơ; mà tôi đặt trong thư mục gốc
RewriteEngine on
RewriteRule ^(application|system|\.svn) index.php/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [QSA,L]
Sau đó, tôi có thể truy cập http://example.com/controller/ Chức năng/parameter
thay vì http://example.com/index.php/controller/ Chức năng/parameter
Thao tác này sẽ giúp bạn dán mã này vào thư mục ứng dụng trong tệp .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>
Điều này đã làm cho tôi hoàn toàn kỳ diệu:
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]
Hy vọng nó giúp!
Xin chào Cái này đã làm việc với tôi
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder/index.php?/$1 [L]
cũng như điều này
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /folder/index.php?/$1 [L]
trong đó thư mục là tên của thư mục con nếu ứng dụng mã hóa này được lưu trữ dưới dạng tên miền phụ, ví dụ tên miền / thư mục / index.php.
Hy vọng rằng sẽ làm việc cho bạn. Cảm ơn.
Sao chép mã sau đây trong .htaccess của bạn
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>
Bước 1 :
Thêm cái này vào tệp htaccess
<IfModule mod_rewrite.c>
RewriteEngine On
#RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]
</IfModule>
Bước 2 :
Xóa index.php trong cấu hình codeigniter
$config['base_url'] = '';
$config['index_page'] = '';
Bước 3 :
Cho phép ghi đè htaccess trong Cấu hình Apache (Lệnh)
sudo nano /etc/apache2/apache2.conf và chỉnh sửa tệp và thay đổi thành
AllowOverride All
cho thư mục www
Bước 4 :
Đã bật ghi lại mod apache (Lệnh)
sudo a2enmod viết lại
Bước 5:
Khởi động lại Apache (Lệnh)
sudo /etc/init.d/apache2 restart