2012年9月26日 星期三

[Apache] 在URL中刪除目錄

http://lmgtfy.com/?q=url+rewrite+remove+folder

http://stackoverflow.com/questions/1314279/mod-rewrite-in-expression-engine-removing-directory-in-url

使用下面規則把目錄去掉
  
#RewriteEngine on  #可能需要打開
#RewriteBase /
RewriteCond %{THE_REQUEST} ^GET\ /website/
RewriteRule ^website/(.*) /$1 [L,R=301]
RewriteRule !^website/ website%{REQUEST_URI}

2012年9月22日 星期六

[CodeIgniter] No Input File Specified.

用ci出現 No input file specified. 錯誤:

http://tzangms.com/programming/977/

因為 http://www.codeigniter.org.tw/user_guide/installation/troubleshooting.html
伺服器可能不支援 PATH_INFO 變數

因為把 config.php
$config['index_page'] = 'index.php';
改為
$config['index_page'] = 'index.php?';

使用 helper - url 的 redirect 會有問題,所以讓url-rewrite去解

把 rewrite改掉如下
原本的 rewrite
RewriteRule ^(.*)$ index.php/$1 [L]
改成
RewriteRule ^(.*)$ index.php?/$1 [L]


2012年9月13日 星期四

我的CI模組

1. http://www.codeigniter.org.tw/  下載最新CI
2. https://github.com/Vheissu/Ci-Smarty 下載最新ci-smarty ,直接解壓縮到CI application目錄下
3. http://www.codeigniter.org.tw/user_guide/general/urls.html 設定ci url-rewrite (把index.php 拿掉),
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|images|robots\.txt|$)
RewriteRule ^(.*)$ index.php/$1 [L,QSA]
index.php、images、robots.txt 的全部 HTTP request 都會被當成是 request index.php 檔案。 )
如果目錄是 http://localhost/justin/amp/index.php/smartytest RewriteBase 要設定 /justin/amp/
4. http://rental.zhupiter.com/postshow_178_1_1.html 打開本機 apache - url-rewrite ( 我電腦是 win 7 - appserv )
4-1 先確定自己的 Apache web server 有設定成支援 ReWrite。
   動態載入 ReWrite engine 的設定下會在 httpd.conf 中看到這一行『LoadModule rewrite_module modules/mod_rewrite.so』。4-2 在 DocumentRoot 所屬的 Directory 設定內設定 ReWrite 參數。
RewriteEngine On
4-3 因為我設定 virualhost 所以也要到 D:\AppServ\Apache2.2\conf\extra\httpd-vhosts.conf 修改設定


<VirtualHost *:80>
    DocumentRoot "D:\AppServ\www"
    ServerName localhost      
    <Directory "D:\AppServ\www">
        Options FollowSymLinks Indexes
        AllowOverride All
        Order allow,deny
        Allow from all
    RewriteEngine On
    </Directory>
</VirtualHost>
4-4 設定完 apache 後 去 win 7的 "服務" 重新啟動apache.
4-5 如果主機不支援url-rewrite或url-rewrite有問題且無法設定apache , 啟動CI的Query Strings
http://www.codeigniter.org.tw/user_guide/general/urls.html

CodeIgniter 也有提供這個功能,可以到 application/config.php 檔案中開啟底下的設定:
$config['enable_query_strings'] = FALSE;
$config['controller_trigger'] = 'c';
$config['function_trigger'] = 'm';
只要把 "enable_query_strings" 設定為 TRUE,這個功能就會啟動。
index.php?c=controller&m=method

設定encryption_key以啟動session功能
$config['encryption_key'] = 'xxx';

5. 在application\libraries\Smarty.php 中設定左分隔符和右分隔符

$this->left_delimiter = '{{';
$this->right_delimiter = '}}';

6. 在 application\config\smarty.php 調整smarty cache
$config['cache_status']         = TRUE;
設為FALSE 讓開發時不使用cache

7. application\config\autoload.php 設定
$autoload['helper'] = array('url'); 
讓前端能直接使用 {{base_url()}} 抓網站網址
$autoload['libraries'] = array('parser','database','session');
自動載入smarty、db、session 功能

8. 在linux主機上要把cache資料夾改權限
ex. $ chmod 777 -R cache

出現錯誤Only variable references should be returned by reference:
A PHP Error was encountered
Severity: Notice
Message: Only variable references should be returned by reference
Filename: core/Common.php
Line Number: 257
https://ellislab.com/forums/viewthread/244510/
解法:

return $_config[0] =& $config;
改成
$_config[0] =& $config;
return $_config[0];

2012年9月4日 星期二

CodeIgniter URL-rewrite

http://www.codeigniter.org.tw/user_guide/general/urls.html
以下是將除了像是 index.php、captcha(資料夾)、images、admin、swf檔(使用.*為任意檔名)、css檔、js檔 的全部 HTTP request 都會被當成是 request index.php 檔案。 ( ex. pond.php => index.php/pond.php )
  
RewriteEngine on
RewriteBase /
RewriteCond $1 !^(index\.php|captcha|images|admin|.*\.swf|.*\.css|.*\.js|.*\.xml|.*\.jpg|$)
RewriteRule ^(.*)$ index.php/$1 [L,QSA]