开发者

codeigniter index.php removal

I have a multi city application and have the following setup for my application

This is outside the server root

framework
   b开发者_开发技巧ackend
   frontend

CI_2.0.1
   system

Now in server root i have 2 folders to represent 2 cities

html
   city1
      city1.php
   city2
      city2.php

I need to add a rule to get rid of the .php in the url so it looks more like

http://example.in/city1/search

http://example.in/city2/search

Or a rule to completely get rid of the index.php file


To index.php and some more .htaccess trick I use this code (CI 2):

# 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

Options +FollowSymLinks

# Set the default file for indexes
DirectoryIndex index.php

<IfModule mod_rewrite.c>
    # mod_rewrite rules
    RewriteEngine on

    # 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>

P.S. I think that I didn't get quite clearly your problem with .php files. But if you haven't already, you'd look at native CI routing system it may solve your problem with another approach)


Let’s start with our big URL:

http://mycustomproject.com/index.php/webpages/view/my-url-title-of-the-post

The first thing that you usually do for your Codeigniter project is to remove the index.php file from the URL. To do it so, it’s really easy:

1st step

Add this code to your .htaccess file to your root of your project.

<IfModule mod_rewrite.c>
# Turn on URL rewriting
RewriteEngine On

# If your website begins from a folder e.g localhost/my_project then 
# you have to change it to: RewriteBase /my_project/
# If your site begins from the root e.g. example.local/ then
# let it as it is
RewriteBase /

# Protect application and system files from being viewed when the index.php is missing
RewriteCond $1 ^(application|system|private|logs)

# Rewrite to index.php/access_denied/URL
RewriteRule ^(.*)$ index.php/access_denied/$1 [PT,L]

# Allow these directories and files to be displayed directly:
RewriteCond $1 ^(index\.php|robots\.txt|favicon\.ico|public|assets|css|js|images)

# No rewriting
RewriteRule ^(.*)$ - [PT,L]

# Rewrite to index.php/URL
RewriteRule ^(.*)$ index.php/$1 [PT,L]
</IfModule>

After the creation of the .htaccess file your project structure will have to look like this:

website_folder/

–––– application/

–––– assets/

–––– system/

–––– user_guide/

---- .htaccess <-------------------------

–––– index.php

–––– license.txt

2nd step

Now go to : application/config/config.php and change the: $config['index_page'] = 'index.php';

to $config['index_page'] = '';

So now your URL will look like this:

http://mycustomproject.com/webpages/view/my-url-title-of-the-post

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜