Code Igniter uses SEO Friendly scripts (AKA, only uses / instead of ?)
This works fine when I try and use it on Apache. Trying to setup my
own VPS with Code Igniter through NGINX only leans to a pain.
The server is setup with the base folder being a phpbb form, and a
codeigniter script in the folder /fg152/
I'm trying to get the nginx to recognize that index.php/login is
supposed to be a query for code igniter, not a file of its own.
I tried every configuration on this link.
http://codeigniter.com/forums/viewthread/90231/
My current Nginx conf looks like this.
location /fg152/ {
root /home/sites/domain/fg152/;
index index.php;
try_files $uri $uri/ /fg152/index.php;
}
location / {
root /home/sites/domain/;
index index.php index.html index.htm;
# PHPBB SEO REWRITE RULES - ADVANCED
# AUTHOR : dcz www.phpbb-seo.com
# STARTED : 01/2006
rewrite
^/(forum|[a-z0-9_-]*-f)([0-9]+)/?(page([0-9]+)\.html)?$
/viewforum.php?f=$2&start=$4 last;
rewrite
^/(forum|[a-z0-9_-]*-f)([0-9]+)/(topic|[a-z0-9_-]*-t)([0-9]+)(-([0-9]+))?\.html$
/viewtopic.php?f=$2&t=$4&start=$6 last;
rewrite
^/([a-z0-9_-]*)/?(topic|[a-z0-9_-]*-t)([0-9]+)(-([0-9]+))?\.html$
/viewtopic.php?forum_uri=$1&t=$3&start=$5 last;
rewrite
^/resources/[a-z0-9_-]+/(thumb/)?([0-9]+)$
/download/file.php?id=$2&t=$1 last;
rewrite ^/member/([^/]+)/?$
/memberlist.php?mode=viewprofile&un=$1 last;
rewrite
^/member/([^/]+)/(topics|posts)/?(page([0-9]+)\.html)?$
/search.php?author=$1&sr=$2&start=$4 last;
rewrite
^/(group|[a-z0-9_-]*-g)([0-9]+)(-([0-9]+))?\.html$
/memberlist.php?mode=group&g=$2&start=$4 last;
rewrite ^/post([0-9]+)\.html$ /viewtopic.php?p=$1 last;
rewrite ^/active-topics(-([0-9]+))?\.html$
/search.php?search_id=active_topics&start=$2&sr=topics last;
rewrite ^/unanswered(-([0-9]+))?\.html$
/search.php?search_id=unanswered&start=$2&sr=topics last;
rewrite ^/newposts(-([0-9]+))?\.html$
/search.php?search_id=newposts&start=$2&sr=topics last;
rewrite ^/unreadposts(-([0-9]+))?\.html$
/search.php?search_id=unreadposts&start=$2 last;
rewrite ^/the-team\.html$
/memberlist.php?mode=leaders last;
rewrite
^/([a-z0-9_-]+)/?(page([0-9]+)\.html)?$
/viewforum.php?forum_uri=$1&start=$3 last;
rewrite
^/.+/(style\.php|ucp\.php|mcp\.php|faq\.php|download/file.php)$ /$1
last;
if (!-e $request_filename) {
rewrite
^/([a-z0-9_/-]+)/?(page([0-9]+)\.html)?$
/viewforum.php?forum_uri=$1&start=$3 last;
break;
}
# END PHPBB PAGES
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# A handy function that became available in 0.7.31 that breaks down
# The path information based on the provided regex expression
# This is handy for requests such as file.php/some/paths/here/
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED
$document_root$fastcgi_path_info;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME
$document_root$fastcgi_script_name;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param DOCUMENT_URI $document_uri;
fastcgi_param DOCUMENT_ROOT $document_root;
fastcgi_param SERVER_PROTOCOL $server_protocol;
fastcgi_param GATEWAY_INTERFACE CGI/1.1;
fastcgi_param SERVER_SOFTWARE nginx;
fastcgi_param REMOTE_ADDR $remote_addr;
fastcgi_param REMOTE_PORT $remote_port;
fastcgi_param SERVER_ADDR $server_addr;
fastcgi_param SERVER_PORT $server_port;
fastcgi_param SERVER_NAME $server_name;
fastcgi_pass unix:/etc/phpcgi/php-cgi.socket;
fastcgi_index index.php;
}
Now. This lets the script work. Instead of giving 404 on
/fg152/index.php/login it shows the login page. EXCEPT the images do
not log. Huge problem there.
The images are located at /fg152/application/views/images/
And the login.php that its calling is located at /fg152/application/controllers/
If I remove the location /fg152/ it will show up with the image files
again (But the rest gets a 404 error
I've tried using
location /fg152r/ {
if (-f $request_filename) {
expires max;
break;
}
if (!-e $request_filename) {
rewrite ^/fg152/(.*)$ /fg152/index.php/$1 last;
}
}
Still no luck. What can I do to resolve this issue and get both php
and image files working?
_______________________________________________
nginx mailing list
ng...@nginx.org
http://mailman.nginx.org/mailman/listinfo/nginx
> The images are located at /fg152/application/views/images/
Try this instead:
location /fg152 {
root /home/sites/domain;
index index.php;
try_files $uri $uri/ /fg152/index.php;
}
Remember that the location is appended to the root, so your
configuration would lead to /home/sites/domain/fg152/fg152, which I
don't think is what you intended.
Regards,
Cliff
Thank you.
FG152/index.php/cron/graburls/999182b003023a35c327db371a74a85f
Gives a 404 not found :(
location ~ \.php$ {
should be:
location ~ \.php($|/) {
It provides No input file specified. when accessing any index.php
links in the /fg152 folder. Including just going to /fg152/index.php
Try this instead:
location ~ \.php {
Can you send your current config? In pastebin instead of email.
/FG152/index.php/cron/graburls/999182b003023a35c327db371a74a85f
This link tells index.php to load cron.php which then run the graburls
command which uses the cronkey (Which is the lost aug)
This returns a 404 with the current config.
Does the /fg512/index.php work? The 404 comes from nginx or php?
Such as
index.php/log
index.php/keywords
etc
The error comes from nginx
404 Not Found
nginx/1.0.5
What's in error log?
Is it with location ~ \.php or location ~\.php$ ?
It had the $ before and still gave the error.
Try reverting to \.php$ and add one more location block:
location ~ \.php/ {
return 503;
Remove the php/ block and change php$ to php (location ~ \.php {)
Since the error came from nginx, seems like you didn't reload the
config properly.
Hi there,
> http://pastebin.com/3uz4tCmd
If I've understood what you are trying to do, will
===
location ^~ /fg152 {
root /usr/local/domain;
index index.php index.html;
try_files $uri $uri/ /fg152/index.php;
location = /fg152/index.php {
include fastcgi.conf;
fastcgi_pass unix:/etc/phpcgi/php-cgi.socket;
}
}
===
fit the requirements?
You can probably move "root", "index", and "include" to server level,
if they are common to other locations.
Be aware that this effectively *removes* the /.ht and /.svn protection
config for this location hierarchy, so you'll want to either put them
back in, or (better) not have readable files in the web space that you
don't want served.
And if you try to access /fg152a, you might be a bit surprised -- but
that can be adjusted later if necessary.
f
--
Francis Daly fra...@daoine.org
Just for your note, FG152 doesn't equal fg152.
wbr, Valentin V. Bartenev