10 Replies - 5572 Views - Last Post: 02 September 2011 - 09:47 AM Rate Topic: -----

#1 angrydwarfz  Icon User is offline

  • D.I.C Head

Reputation: 5
  • View blog
  • Posts: 60
  • Joined: 07-December 08

Codeigniter breaks when a URL ends in a trailing slash

Posted 02 September 2011 - 04:07 AM

Hello DreamInCode community, yet again!

I have a rather strange problem that has been bugging me for several hours nou. Dozens of google searches and still nothing...
I'm working on a CodeIgniter web application located in a sub-folder of my root.

localhost/app


I have a .htaccess file in that folder containing a set of rules, including one to add a trailing slash to the end of a URL, if it doesn't contain one. However, no mater what I do (setting rewritebase doesn't help either), whenever I click a link or something, instead of going to localhost/app/controller/function, the browser gets pointed at localhost/controller/function, resulting in an error.

I have tried editing my config file's 'base_url' to '/app' but to no avail.

My .htaccess also hides the index.php section of the url. It's a combination between the CI Super .htaccess file I found on the CodeIgniter forums and the HTML5 Boilerplater one.

Here it is:
# Apache configuration file
# httpd.apache.org/docs/2.2/mod/quickreference.html

# Note .htaccess files are an overhead, this logic should be in your Apache config if possible
# httpd.apache.org/docs/2.2/howto/htaccess.html

# Techniques in here adapted from all over, including:
#   Kroc Camen: camendesign.com/.htaccess
#   perishablepress.com/press/2006/01/10/stupid-htaccess-tricks/
#   Sample .htaccess file of CMS MODx: modxcms.com


###
### If you run a webserver other than apache, consider:
### github.com/paulirish/html5-boilerplate-server-configs
###



# ----------------------------------------------------------------------
# Better website experience for IE users
# ----------------------------------------------------------------------

# Force the latest IE version, in various cases when it may fall back to IE7 mode
#  github.com/rails/rails/commit/123eb25#commitcomment-118920
# Use ChromeFrame if it's installed for a better experience for the poor IE folk

<IfModule mod_setenvif.c>
  <IfModule mod_headers.c>
    BrowserMatch MSIE ie
    Header set X-UA-Compatible "IE=Edge,chrome=1" env=ie
  </IfModule>
</IfModule>

<IfModule mod_headers.c>
# Because X-UA-Compatible isn't sent to non-IE (to save header bytes),
#   We need to inform proxies that content changes based on UA
  Header append Vary User-Agent
# Cache control is set only if mod_headers is enabled, so that's unncessary to declare
</IfModule>


# ----------------------------------------------------------------------
# Cross-domain AJAX requests
# ----------------------------------------------------------------------

# Serve cross-domain ajax requests, disabled.   
# enable-cors.org
# code.google.com/p/html5security/wiki/CrossOriginRequestSecurity

#  <IfModule mod_headers.c>
#    Header set Access-Control-Allow-Origin "*"
#  </IfModule>



# ----------------------------------------------------------------------
# Webfont access
# ----------------------------------------------------------------------

# allow access from all domains for webfonts
# alternatively you could only whitelist
#   your subdomains like "sub.domain.com"

<FilesMatch "\.(ttf|otf|eot|woff|font.css)$">
  <IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
  </IfModule>
</FilesMatch>



# ----------------------------------------------------------------------
# Proper MIME type for all files
# ----------------------------------------------------------------------

# audio
AddType audio/ogg                      oga ogg

# video
AddType video/ogg                      ogv
AddType video/mp4                      mp4
AddType video/webm                     webm

# Proper svg serving. Required for svg webfonts on iPad
#   twitter.com/FontSquirrel/status/14855840545
AddType     image/svg+xml              svg svgz 
AddEncoding gzip                       svgz
                                       
# webfonts                             
AddType application/vnd.ms-fontobject  eot
AddType font/truetype                  ttf
AddType font/opentype                  otf
AddType application/x-font-woff        woff

# assorted types                                      
AddType image/x-icon                   ico
AddType image/webp                     webp
AddType text/cache-manifest            appcache manifest
AddType text/x-component               htc
AddType application/x-chrome-extension crx
AddType application/x-xpinstall        xpi
AddType application/octet-stream       safariextz



# ----------------------------------------------------------------------
# Allow concatenation from within specific js and css files 
# ----------------------------------------------------------------------

# e.g. Inside of script.combined.js you could have
#   <!--#include file="libs/jquery-1.5.0.min.js" -->
#   <!--#include file="plugins/jquery.idletimer.js" -->
# and they would be included into this single file

# this is not in use in the boilerplate as it stands. you may
#   choose to name your files in this way for this advantage
#   or concatenate and minify them manually.
# Disabled by default.

# <FilesMatch "\.combined\.(js|css)$">
#         Options +Includes
#         SetOutputFilter INCLUDES
# </FilesMatch>



# ----------------------------------------------------------------------
# gzip compression
# ----------------------------------------------------------------------

<IfModule mod_deflate.c>


# force deflate for mangled headers developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping/
<IfModule mod_setenvif.c>
  <IfModule mod_headers.c>
    SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s,?\s(gzip|deflate)?|X{4,13}|~{4,13}|-{4,13})$ HAVE_Accept-Encoding
    RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
  </IfModule>
</IfModule>
# html, txt, css, js, json, xml, htc:
<IfModule filter_module>
  FilterDeclare   COMPRESS
  FilterProvider  COMPRESS  DEFLATE resp=Content-Type /text/(html|css|javascript|plain|x(ml|-component))/
  FilterProvider  COMPRESS  DEFLATE resp=Content-Type /application/(javascript|json|xml|x-javascript)/
  FilterChain     COMPRESS
  FilterProtocol  COMPRESS  change=yes;byteranges=no
</IfModule>

<IfModule !mod_filter.c>
  # Legacy versions of Apache
  AddOutputFilterByType DEFLATE text/html text/plain text/css application/json
  AddOutputFilterByType DEFLATE text/javascript application/javascript application/x-javascript 
  AddOutputFilterByType DEFLATE text/xml application/xml text/x-component
</IfModule>

# webfonts and svg:
  <FilesMatch "\.(ttf|otf|eot|svg)$" >
    SetOutputFilter DEFLATE
  </FilesMatch>
</IfModule>



# ----------------------------------------------------------------------
# Expires headers (for better cache control)
# ----------------------------------------------------------------------

# these are pretty far-future expires headers
# they assume you control versioning with cachebusting query params like
#   <script src="application.js?20100608">
# additionally, consider that outdated proxies may miscache 
#   www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/

# if you don't use filenames to version, lower the css and js to something like
#   "access plus 1 week" or so

<IfModule mod_expires.c>
  ExpiresActive on

# Perhaps better to whitelist expires rules? Perhaps.
  ExpiresDefault                          "access plus 1 month"

# cache.appcache needs re-requests in FF 3.6 (thx Remy ~Introducing HTML5)
  ExpiresByType text/cache-manifest       "access plus 0 seconds"

# your document html 
  ExpiresByType text/html                 "access plus 0 seconds"
  
# data
  ExpiresByType text/xml                  "access plus 0 seconds"
  ExpiresByType application/xml           "access plus 0 seconds"
  ExpiresByType application/json          "access plus 0 seconds"

# rss feed
  ExpiresByType application/rss+xml       "access plus 1 hour"

# favicon (cannot be renamed)
  ExpiresByType image/x-icon              "access plus 1 week" 

# media: images, video, audio
  ExpiresByType image/gif                 "access plus 1 month"
  ExpiresByType image/png                 "access plus 1 month"
  ExpiresByType image/jpg                 "access plus 1 month"
  ExpiresByType image/jpeg                "access plus 1 month"
  ExpiresByType video/ogg                 "access plus 1 month"
  ExpiresByType audio/ogg                 "access plus 1 month"
  ExpiresByType video/mp4                 "access plus 1 month"
  ExpiresByType video/webm                "access plus 1 month"
  
# htc files  (css3pie)
  ExpiresByType text/x-component          "access plus 1 month"
  
# webfonts
  ExpiresByType font/truetype             "access plus 1 month"
  ExpiresByType font/opentype             "access plus 1 month"
  ExpiresByType application/x-font-woff   "access plus 1 month"
  ExpiresByType image/svg+xml             "access plus 1 month"
  ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
    
# css and javascript
  ExpiresByType text/css                  "access plus 2 months"
  ExpiresByType application/javascript    "access plus 2 months"
  ExpiresByType text/javascript           "access plus 2 months"
  
  <IfModule mod_headers.c>
    Header append Cache-Control "public"
  </IfModule>
  
</IfModule>



# ----------------------------------------------------------------------
# ETag removal
# ----------------------------------------------------------------------

# Since we're sending far-future expires, we don't need ETags for
# static content.
#   developer.yahoo.com/performance/rules.html#etags
FileETag None



# ----------------------------------------------------------------------
# Stop screen flicker in IE on CSS rollovers
# ----------------------------------------------------------------------

# The following directives stop screen flicker in IE on CSS rollovers - in
# combination with the "ExpiresByType" rules for images (see above). If
# needed, un-comment the following rules.

# BrowserMatch "MSIE" brokenvary=1
# BrowserMatch "Mozilla/4.[0-9]{2}" brokenvary=1
# BrowserMatch "Opera" !brokenvary
# SetEnvIf brokenvary 1 force-no-vary



# ----------------------------------------------------------------------
# Cookie setting from iframes
# ----------------------------------------------------------------------

# Allow cookies to be set from iframes (for IE only)
# If needed, uncomment and specify a path or regex in the Location directive

# <IfModule mod_headers.c>
#   <Location />
#     Header set P3P "policyref=\"/w3c/p3p.xml\", CP=\"IDC DSP COR ADM DEVi TAIi PSA PSD IVAi IVDi CONi HIS OUR IND CNT\""
#   </Location>
# </IfModule>



# ----------------------------------------------------------------------
# Start rewrite engine
# ----------------------------------------------------------------------

# Turning on the rewrite engine is necessary for the following rules and features.

<IfModule mod_rewrite.c>
  RewriteEngine On

    # The RewriteBase of the system (if you are using this sytem in a sub-folder).
    # RewriteBase /agricol/

</IfModule>




# ----------------------------------------------------------------------
# Suppress or force the "www." at the beginning of URLs
# ----------------------------------------------------------------------

# The same content should never be available under two different URLs - especially not with and
# without "www." at the beginning, since this can cause SEO problems (duplicate content).
# That's why you should choose one of the alternatives and redirect the other one.

# By default option 1 (no "www.") is activated. Remember: Shorter URLs are sexier.
# no-www.org/faq.php?q=class_b

# If you rather want to use option 2, just comment out all option 1 lines
# and uncomment option 2.
# IMPORTANT: NEVER USE BOTH RULES AT THE SAME TIME!

# ----------------------------------------------------------------------

# Option 1:
# Rewrite "www.domain.com -> domain.com" 

<IfModule mod_rewrite.c>
  RewriteCond %{HTTPS} !=on
  RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
  RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
</IfModule>

# ----------------------------------------------------------------------

# Option 2:
# To rewrite "domain.com -> www.domain.com" uncomment the following lines.
# Be aware that the following rule might not be a good idea if you
# use "real" subdomains for certain parts of your website.

# <IfModule mod_rewrite.c>
#   RewriteCond %{HTTPS} !=on
#   RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
#   RewriteCond %{HTTP_HOST} (.+)$ [NC]
#   RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
# </IfModule>



# ----------------------------------------------------------------------
# Add/remove trailing slash to (non-file) URLs
# ----------------------------------------------------------------------

# Google treats URLs with and without trailing slashes separately.
# Forcing a trailing slash is usually preferred, but all that's really
# important is that one correctly redirects to the other.

# By default option 1 (force trailing slash) is activated.
# http://googlewebmastercentral.blogspot.com/2010/04/to-slash-or-not-to-slash.html
# http://www.alistapart.com/articles/slashforward/
# http://httpd.apache.org/docs/2.0/misc/rewriteguide.html#url Trailing Slash Problem

# ----------------------------------------------------------------------

# Option 1:
# Rewrite "domain.com/foo -> domain.com/foo/"

<IfModule mod_rewrite.c>
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/|#(.*))$
  RewriteRule ^(.*)$ /$1/ [R=301,L]
</IfModule>

# ----------------------------------------------------------------------

# Option 2:
# Rewrite "domain.com/foo/ -> domain.com/foo"

#<IfModule mod_rewrite.c>
#  RewriteRule ^(.*)/$ /$1 [R=301,L]
#</IfModule>



# ----------------------------------------------------------------------
# Built-in filename-based cache busting
# ----------------------------------------------------------------------

# If you're not using the build script to manage your filename version revving,
# you might want to consider enabling this, which will route requests for
# /css/style.20110203.css to /css/style.css

# To understand why this is important and a better idea than all.css?v1231,
# read: github.com/paulirish/html5-boilerplate/wiki/Version-Control-with-Cachebusting

# Uncomment to enable.
# <IfModule mod_rewrite.c>
#   RewriteCond %{REQUEST_FILENAME} !-f
#   RewriteCond %{REQUEST_FILENAME} !-d
#   RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpg|gif)$ $1.$3 [L]
# </IfModule>


	
# ----------------------------------------------------------------------
# Prevent SSL cert warnings
# ----------------------------------------------------------------------

# Rewrite secure requests properly to prevent SSL cert warnings, e.g. prevent 
# https://www.domain.com when your cert only allows https://secure.domain.com
# Uncomment the following lines to use this feature.

# <IfModule mod_rewrite.c>
#   RewriteCond %{SERVER_PORT} !^443
#   RewriteRule (.*) https://example-domain-please-change-me.com/$1 [R=301,L]
# </IfModule>

# ----------------------------------------------------------------------
# Super CI .htaccess
# ----------------------------------------------------------------------
# Deny OR Allow Folder Indexes.
# Since we disable access to PHP files you 
# can leave this on without worries. 
# OR better yet, create a .htaccess file in
# the dir you want to allow browsing and
# set it to +Indexes
# Options -Indexes # already done by boilerplate

Options +FollowSymLinks

# Set the default file for indexes
DirectoryIndex index.php

<IfModule mod_rewrite.c>
    # mod_rewrite rules

	# Block access to "hidden" directories whose names begin with a period. This
	# includes directories used by version control systems such as Subversion or Git.
	RewriteRule "(^|/)\." - [F]
    
    # This will make the site only accessible without the "www." 
    # (which will keep the subdomain-sensive config file happy)
    # If you want the site to be accessed WITH the "www." 
    # comment-out the following two lines.
    # RewriteCond %{HTTP_HOST} ^www\.site\.com$ [NC]
    # RewriteRule ^(.*)$ http://site.com/$1 [L,R=301]
    
    # If a controler can't be found - then issue a 404 error from PHP
    # Error messages (via the "error" plugin)
    # ErrorDocument 403 /index.php/403/
    # ErrorDocument 404 /index.php/404/
    # ErrorDocument 500 /index.php/500/
    
    # Deny any people (or bots) from the following sites: (to stop spam comments)
    # RewriteCond %{HTTP_REFERER} nienschanz\.ru [NC,OR]
    # RewriteCond %{HTTP_REFERER} porn\.com
    # RewriteRule .* - [F]
    # Note: if you are having trouble from a certain URL just 
    # add it above to forbide all visitors from that site.

    # You can also uncomment this if you know the IP:
    # Deny from 192.168.1.1
    
    # If the file is NOT the index.php file
    #RewriteCond %{REQUEST_FILENAME} !index.php
    # Hide all PHP files so none can be accessed by HTTP
    #RewriteRule (.*)\.php$ index.php/$1
    
    # If the file/dir is NOT real go to index
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [QSA,L]
    
</IfModule>

# If Mod_ewrite is NOT installed go to index.php
<IfModule !mod_rewrite.c>
    ErrorDocument 404 index.php
</IfModule> 


# ----------------------------------------------------------------------
# Prevent 404 errors for non-existing redirected folders
# ----------------------------------------------------------------------

# without -MultiViews, Apache will give a 404 for a rewrite if a folder of the same name does not exist 
#   e.g. /blog/hello : webmasterworld.com/apache/3808792.htm

Options -MultiViews 



# ----------------------------------------------------------------------
# custom 404 page
# ----------------------------------------------------------------------

# You can add custom pages to handle 500 or 403 pretty easily, if you like.
ErrorDocument 404 /404.html



# ----------------------------------------------------------------------
# UTF-8 encoding
# ----------------------------------------------------------------------

# use utf-8 encoding for anything served text/plain or text/html
AddDefaultCharset utf-8

# force utf-8 for a number of file formats
AddCharset utf-8 .html .css .js .xml .json .rss



# ----------------------------------------------------------------------
# A little more security
# ----------------------------------------------------------------------


# Do we want to advertise the exact version number of Apache we're running?
# Probably not.
## This can only be enabled if used in httpd.conf - It will not work in .htaccess
# ServerTokens Prod


# "-Indexes" will have Apache block users from browsing folders without a default document
# Usually you should leave this activated, because you shouldn't allow everybody to surf through
# every folder on your server (which includes rather private places like CMS system folders).
Options -Indexes

#mod rewrite moved 

# If your server is not already configured as such, the following directive
# should be uncommented in order to set PHP's register_globals option to OFF.
# This closes a major security hole that is abused by most XSS (cross-site
# scripting) attacks. For more information: http://php.net/register_globals
#
# IF REGISTER_GLOBALS DIRECTIVE CAUSES 500 INTERNAL SERVER ERRORS :
#
# Your server does not allow PHP directives to be set via .htaccess. In that
# case you must make this change in your php.ini file instead. If you are
# using a commercial web host, contact the administrators for assistance in
# doing this. Not all servers allow local php.ini files, and they should
# include all PHP configurations (not just this one), or you will effectively
# reset everything to PHP defaults. Consult www.php.net for more detailed
# information about setting PHP directives.

# php_flag register_globals Off



Thanks in advance!
AD

Is This A Good Question/Topic? 0
  • +

Replies To: Codeigniter breaks when a URL ends in a trailing slash

#2 RudiVisser  Icon User is offline

  • .. does not guess solutions
  • member icon

Reputation: 1004
  • View blog
  • Posts: 3,562
  • Joined: 05-June 09

Re: Codeigniter breaks when a URL ends in a trailing slash

Posted 02 September 2011 - 04:53 AM

Wow that .htaccess is ugly as crap - Now I realise why I never trust CI developers or anything related :dontgetit:

Aaaaaanyway, your title is very misleading as this doesn't seem to be anything to do with your URL ending in a trailing slash or not, but simply CodeIgniter's helper functions outputting the wrong thing. This would also be nothing at all to do with .htaccess.

Now then, when you say this:

Quote

instead of going to localhost/app/controller/function, the browser gets pointed at localhost/controller/function, resulting in an error.


What do you mean?

Do you mean 1; If you visit http://localhost/app/controller/action, your browser gets redirected somewhere without the /app/?

Or do you mean 2; When you browse your CI site, the links are present without /app/ in them?
Was This Post Helpful? 0
  • +
  • -

#3 angrydwarfz  Icon User is offline

  • D.I.C Head

Reputation: 5
  • View blog
  • Posts: 60
  • Joined: 07-December 08

Re: Codeigniter breaks when a URL ends in a trailing slash

Posted 02 September 2011 - 05:22 AM

Thanks for the reply!:D Yeah, I agree, the .htaccess is quite messy, mostly because it's mashed together from several snippets.

As for your question - it's the first one - i get redirected to localhost/controller/action.

This happens when I leave the bit that REMOVES the trailing slash from the .htaccess file intact. AKA when it applies the rule that removes the slash, something goes wrong.

When I comment out that part, and enable the rule that always ADDS a trailing slash, everything is broken, and I always get redirected to localhost/controller-but-no-app-folder/action.

Commenting out BOTH rules makes everything work alright, but I've read that it can cause cache and web crawler issues. Something about double caching the pages - one entry for when a trailing slash is present and one for when it isn't.

I agree it's not an important issue, I'm just curious as to why these redirects are happening...
Was This Post Helpful? 0
  • +
  • -

#4 RudiVisser  Icon User is offline

  • .. does not guess solutions
  • member icon

Reputation: 1004
  • View blog
  • Posts: 3,562
  • Joined: 05-June 09

Re: Codeigniter breaks when a URL ends in a trailing slash

Posted 02 September 2011 - 05:31 AM

I'm not sure and my lunch break is about to end so can't go over the whole .htaccess (sorry!).

HOWEVER, if that's all you're worried about, don't worry about it at all!

You can specify a canonical link in your page that defines a single link, so even if they access your page via:
http://localhost/page/name
http://localhost/page/name/
http://localhost/pag...asl&lololsagsdg

To do this all you need to do is do this:
<link rel="canonical" href="http://localhost/page/name" />


This should be the same for all pages with the same content and Google (+ others) will all obey that tag which basically says, hey, I'm the same as this other page, so ignore me!

It's all good :rockon:
Was This Post Helpful? 2
  • +
  • -

#5 angrydwarfz  Icon User is offline

  • D.I.C Head

Reputation: 5
  • View blog
  • Posts: 60
  • Joined: 07-December 08

Re: Codeigniter breaks when a URL ends in a trailing slash

Posted 02 September 2011 - 05:40 AM

Wow, thanks so much for all this help that you gave me during your lunch break. :D
I've never heard about link rel="canonical", I'll look it up, thanks!:D

Leaving that aside, I'm just interested to know what could be causing this problem, when those rules are enabled. It must be the fact that the rule that adds the slash is marked as [L], so maybe it prevents the execution of another rewrite rule, but I couldn't spot anything that would cause a problem. Odd.

And thanks again! :D

EDIT: I've found some neat articles about link rel = "canonical", it's a clever little rule; anyway, regarding your remark about CI developers, do you personally think it's bad practice using a framework?

This post has been edited by angrydwarfz: 02 September 2011 - 05:43 AM

Was This Post Helpful? 0
  • +
  • -

#6 RudiVisser  Icon User is offline

  • .. does not guess solutions
  • member icon

Reputation: 1004
  • View blog
  • Posts: 3,562
  • Joined: 05-June 09

Re: Codeigniter breaks when a URL ends in a trailing slash

Posted 02 September 2011 - 05:55 AM

View Postangrydwarfz, on 02 September 2011 - 01:40 PM, said:

anyway, regarding your remark about CI developers, do you personally think it's bad practice using a framework?

Not really, but when it comes to CI, mostly yes.

It's perhaps only the ones I've seen, but every single site and developer I know that has used CI is absolute crap. It's kindof scary that I think of ZF in a better light than I do CI, because ZF is also a bunch of crap.

I've personally not used a proper framework (there's a topic in PHP Programmers about writing your own framework which could be a good read). The reason being in that I like my own coding style and I like to only use what I actually require, reusing code is fine, and perhaps having a small library of helper functions/classes along the way is also great. However! Something that forces you in to doing stuff (For example Zend_Db_Table refuses to work unless your table has a primary key - wtf?) is always bad.

As I mentioned in that other thread, I've seen people use a whole framework literally just to get an MVC-style structure into their code and make their URLs 'pretty'. You can write an 'MVC-Framework' (which basically consists of a router and standardised way of creating a 'Controller' class) in about 2 minutes.

EDIT: Here's that thread.

This post has been edited by RudiVisser: 02 September 2011 - 06:01 AM

Was This Post Helpful? 0
  • +
  • -

#7 angrydwarfz  Icon User is offline

  • D.I.C Head

Reputation: 5
  • View blog
  • Posts: 60
  • Joined: 07-December 08

Re: Codeigniter breaks when a URL ends in a trailing slash

Posted 02 September 2011 - 07:39 AM

Thanks for the link! I've read through the thread, but I have to say, since I knew what the MVC architecture was all about, it took me roughly 5 minutes to set CI up, providing me with a router, lots of security features, tons of loadable helpers at my disposal, as well as tools like profiling, form validation and generation and so on. Plus, their documentation is really extensive.
Was This Post Helpful? 0
  • +
  • -

#8 RudiVisser  Icon User is offline

  • .. does not guess solutions
  • member icon

Reputation: 1004
  • View blog
  • Posts: 3,562
  • Joined: 05-June 09

Re: Codeigniter breaks when a URL ends in a trailing slash

Posted 02 September 2011 - 07:54 AM

View Postangrydwarfz, on 02 September 2011 - 03:39 PM, said:

Thanks for the link! I've read through the thread, but I have to say, since I knew what the MVC architecture was all about, it took me roughly 5 minutes to set CI up, providing me with a router, lots of security features, tons of loadable helpers at my disposal, as well as tools like profiling, form validation and generation and so on. Plus, their documentation is really extensive.

That's all good, like I said it's all personal opinion as to whether using a framework is good or bad. It's just everything that I've seen (so far) written in CodeIgniter is a bitch to maintain or update, and it's slow as crap too.

Maybe it's improved though, the last time I knew anyone to use it was around 2 years ago now. Wow time goes fast :(
Was This Post Helpful? 0
  • +
  • -

#9 shezzy  Icon User is offline

  • D.I.C Head

Reputation: 27
  • View blog
  • Posts: 194
  • Joined: 28-January 07

Re: Codeigniter breaks when a URL ends in a trailing slash

Posted 02 September 2011 - 09:02 AM

@Rudi

Seems your against CI however it is very fast and the developers you've witnessed use it are lame. Don't let the OP's horrible .htaccess file mislead you. HMVC Codeigniter is VERY nice as well. Have you even considered MVC or HMVC? If not, I'm almost positive your wasting more time then you need to when developing. People use it for more then neat urls. Not gonna list all the reasons why, google is good for that
Was This Post Helpful? 0
  • +
  • -

#10 RudiVisser  Icon User is offline

  • .. does not guess solutions
  • member icon

Reputation: 1004
  • View blog
  • Posts: 3,562
  • Joined: 05-June 09

Re: Codeigniter breaks when a URL ends in a trailing slash

Posted 02 September 2011 - 09:45 AM

View Postshezzy, on 02 September 2011 - 05:02 PM, said:

Seems your against CI however it is very fast and the developers you've witnessed use it are lame.

Actually, one of the developers I know that used it is one of the best developers that I know, and I've worked with him for 3 years - Soon got him out of his CI habits though ;)

View Postshezzy, on 02 September 2011 - 05:02 PM, said:

Don't let the OP's horrible .htaccess file mislead you. HMVC Codeigniter is VERY nice as well. Have you even considered MVC or HMVC? If not, I'm almost positive your wasting more time then you need to when developing. People use it for more then neat urls. Not gonna list all the reasons why, google is good for that

MVC is not the be-all-end-all to development, and of course it's not used for pretty URLs. What I said is that most people who don't understand what they're doing will use large frameworks simply for their MVC style layout as they don't know what's best.

I'm not letting any .htaccess file mislead me at all, I'm going from past experience and from what I've seen, not just 1 thing.

Creating your own MVC framework takes little over 15 minutes and will be much faster than any pre-built framework out there. Infact, all the framework should be handling is the routing, end of.

Models should always be left down to the user as it's not in any way beneficial to force random standards upon the developer.
Was This Post Helpful? 0
  • +
  • -

#11 angrydwarfz  Icon User is offline

  • D.I.C Head

Reputation: 5
  • View blog
  • Posts: 60
  • Joined: 07-December 08

Re: Codeigniter breaks when a URL ends in a trailing slash

Posted 02 September 2011 - 09:47 AM

Maybe the people who work with the framework, like you said, only used it to make their URLs pretty, and have little to no idea about modular design, or how the MVC architecture actually works (or should work).

There are some downsides, however. For instance, I used the same controller for a series of displayed pages and AJAX requests, and it loaded a LOT of stuff in its constructor. It generated tab html code and loaded 5-6 libraries only for a outputting some simple JSON data, for instance. So, after all, it's a lot about the coder, not the framework. :)

Also, a lot can improve in 2 years -- just look at XNA. ;)

EDIT: gosh, I'm starting to feel more and more ashamed of that choppy .htaccess file - would removing the commented-out rules help, or are most of the active ones useless too?

This post has been edited by angrydwarfz: 02 September 2011 - 09:50 AM

Was This Post Helpful? 1
  • +
  • -

Page 1 of 1