1

サイトで CodeIgniter を使用しており、URL を短縮して見栄えを良くしたいのですが、うまくいかないようです。私は htaccess メソッドを使用しています。これは以下のコードです。

<IfModule mod_rewrite.c>

RewriteCond $1 !^(index\.php|(.*)\.swf|user_guide|profiles|images|min|assets|robots\.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

RewriteEngine On

RewriteBase /gicfamily/

RewriteRule ^([a-zA-Z0-9]+)$ gallery?var=$1

URLgicfamily.org/gallery?var=photos を次のようにしたいgicfamily.org/gallery/photos.

私の設定ファイルは次のようになります。

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


$config['base_url'] = '';


$config['index_page'] = '';


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

$config['url_suffix'] = '';

$config['language'] = 'english';


$config['charset'] = 'UTF-8';


$config['enable_hooks'] = FALSE;


$config['subclass_prefix'] = 'MY_';



$config['permitted_uri_chars'] = 'a-z 0-9~%.:_\-';


$config['allow_get_array']      = TRUE;
$config['enable_query_strings'] = FALSE;
$config['controller_trigger']   = 'c';
$config['function_trigger']     = 'm';
$config['directory_trigger']    = 'd'; // experimental not currently in use


$config['log_threshold'] = 0;


$config['log_path'] = '';

$config['log_date_format'] = 'Y-m-d H:i:s';

$config['cache_path'] = '';


$config['encryption_key'] = 'ksfkvjbskfbvskbvlbsbvsokbskdb';


$config['sess_cookie_name']     = 'gic_session';
$config['sess_expiration']      = 7200;
$config['sess_expire_on_close'] = TRUE;
$config['sess_encrypt_cookie']  = FALSE;
$config['sess_use_database']    = TRUE;
$config['sess_table_name']      = 'gic_sessions';
$config['sess_match_ip']        = FALSE;
$config['sess_match_useragent'] = TRUE;
$config['sess_time_to_update']  = 300;

$config['cookie_prefix']    = "";
$config['cookie_domain']    = "";
$config['cookie_path']      = "/";
$config['cookie_secure']    = FALSE;

$config['global_xss_filtering'] = FALSE;

$config['csrf_protection'] = FALSE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;

$config['compress_output'] = FALSE;


$config['time_reference'] = 'local';


$config['rewrite_short_tags'] = FALSE;


$config['proxy_ips'] = '';
4

1 に答える 1

3

CodeIgniter でルートと URL がどのように機能するかを誤解していると思います。ルーティング機能の使用方法については、次の 2 つのページを参照してください。

http://codeigniter.com/user_guide/general/urls.html http://codeigniter.com/user_guide/general/routing.html

「パラメータ」の概念は、URL 構造内のパラメータの配置によって暗示されます。例えば:

/gallery?var=photos

なるだろう

/gallery/photos

この例では、これらのそれぞれを URL の「セグメント」と呼びます。galleryはセグメント #1 であり、photosセグメント #2 です。パターンは常に、セグメント #1 がコントローラーであり、セグメント #2 がメソッドです。URL の場合は次のようになります。galleryはコントローラー、photosはメソッドです。

パラメータを渡したい場合は、次のように追加セグメントとして URL に追加します。

/gallery/photos/param1/param2

これにより、達成しようとしているよりクリーンな外観が実現します。


更新 私は答えで、これがあなたがやろうとしている .htaccess の書き換えを置き換えるとは言いませんでした。.htaccess の次の行を保持します。

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]
于 2012-09-18T01:00:06.653 に答える