как написать .htaccess файл для моего сайта codeigniter

1

Вот мой URL с заголовком SEO

http://prdemos.com/Web/2015/assetsrecovered/index.php/pages/page?seo=ar-about-us

я хочу изменить его в

http://prdemos.com/Web/2015/assetsrecovered/ar-about-us

index.php/pages/page?seo= эта часть должна быть удалена.

Теги:
codeigniter
.htaccess
seo

4 ответа

1
Лучший ответ

В первую очередь я устанавливаю config.php

$config['index_page'] = ""; 

А также

$config['uri_protocol'] = 'PATH_INFO';

После этого в routes.php

$route['default_controller'] = "welcome";  // Default Controller
$route['pages/([a-zA-Z-0-9.&_]+)'] = "pages/index/$1";
$route['404_override'] = '';

Я назвал динамическое меню с slug (или заголовком SEO), в моем header.php

<?php
foreach($menu as $menu_item){
?>
<li>
<a href="<?php echo base_url();?>pages/<?php echo $menu_item['seo'];?>">
<?php echo $menu_item['name'];?>
</a>
</li>
<?php
}
?>

Мой контроллер - pages.php

<?php
defined('BASEPATH') OR exit('No direct script access allowed');

class Pages extends CI_Controller {

    public function index($seo='')
    {
      $this->load->model('MPages');
      $data['seo']=$this->MPages->get_seo_by_page_slug($seo)->result();
      // Loading Common Views
        $this->load->view('header',$data);
        $this->load->view('topbar',$data);
        $this->load->view('mypage_view',$data);
    }
}

Наконец, я получаю эти URL-адреса

http://mysitelive/pages/ar-about-us
http://mysitelive/pages/ar-services
0
<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
  ErrorDocument 404 /index.php
</IfModule>

Этот файл.htaccess позволит писать ссылки без index.php в url, но он по-прежнему будет выглядеть следующим образом: http://prdemos.com/Web/2015/assetsrecovered/pages/page?seo=ar-about-us

Вам нужно изменить свои маршруты и контроллер, чтобы удалить ?seo=.

В контроллере ваше действие должно быть public function page($seo) что-то вроде этого, а маршрут должен быть $route['pages/page/(:any)'] = "pages/page/$1"; а затем в функции действия контроллера измените ваш $_GET['seo'] на $seo.

После этого вы можете получить доступ к своей странице, например: http://prdemos.com/Web/2015/assetsrecovered/pages/page/ar-about-us

Если вы хотите удалить /pages/page вы можете добавить это к вашим routes.php: $route['(:any)'] = "pages/page/$1 Но используйте это с предосторожностями, потому что неправильное размещение в файле маршрутов может препятствовать работе других маршрутов

0

удалить index.php

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [QSA,L]
</IfModule>
0

Удалите index.php из url, используя .htaccess как это,

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L]

Чтобы удалить оставшуюся часть, используйте routes.php

$route['{default_controller}/{default_method}/(:num)'] = "{original_controller}/{original_method}/$1";
  • 0
    я должен поставить $ route ['{default_controller} / {default_method} / (: num)'] = "{original_controller} / {original_method} / $ 1"; ????
  • 0
    $route['(:any)'] = "pages/page/$1";
Показать ещё 8 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню