I have couple of html files in public folder at firebase hosting listed as below.
index.html
content_1.html
content_2.html
app.js
app.css
consider domain name is example.com
as of now user can access all these file using syntax example.com/content_1.html or example.com/app.css.
is it possible to prevent direct access to these files but index.html ? I use these files while building the index.html through jquery
In Apache would have used Order allow,deny and Allow from all at httpd.conf, but not sure how to achieve this on Firebase Hosting.
Thanks in advance for your help
is it possible to prevent direct access to these files but index.html ? I use these files while building the index.html through jquery
You cannot simultaneously provide indirect access to a resource required by a web page and block it from direct access at the client level regardless of the web server being used unless you're assembling things on the server first.
Related
i'am new to the hosting/c-panel stuff, and i got a laravel based app installed on my godaddy hosting, the problem is that the application require some files that are placed on the root directory of the server for example http://server.com/images/ajax-loader.gif and the file is placed just there
but when i type the link http://server.com/images/ajax-loader.gif it doesn't find it:
so i need to add a public like http://server.com/public/images/ajax-loader.gif like:
the problem is that the entire app needs to be modified to add a public for every file like that, so is there any way i can access the root folder without adding this /public/ ?
Have you contacted the hosting provider? Usually, they help with these kinds of issues.
Do other images from your 'images' directory load fine? If all images in the images directory do not load in the browser, that indicates either a permission issue or some .htaccess settings. Again needs to be checked at the hosting provider end.
I'm starting new project for my company and it's requiring hosting multiple applications under one domain. Each applications must be accessible by different subdomain (wildcards). One of applications will be control panel for all sub-apps. Creating one multi module application is not an option because of complexity of child applications.
All applications must share common libraries and have access to some app specific ones.
I'm still trying to design directory structure that allow store each applications outside public folder, access them dynamically via subdomain and store some files in public folder for each of them separately.
What I've figured out so far :
Host each application with default ZF dir structure in separate dir outside public. Access to public files is possible by plugin printing files to browser from app public directory (witch is outside domains public dir). Only change to default ZF application is thet there is only one index.php file in public_html that starts requested application based on subdomain.
domain_dir/
controllPanel_app/
application/
configs/
modules/
layouts/
Bootstrap.php
library/
public/
subApps/
exampleSub_app/
application/
library/
public/
anotherExampleSub_app/
application/
...
common/
library/
Zend/
Other/
public_html/
index.php
Is this good idea?
You could do it the way you suggest, but I think it'll be more trouble than it's worth. Zend Framework is designed for modules if needed, but not sub-apps. You'll probably end up with a Zend Router nightmare, or some complicated .htaccess trickery, both of which would be hard to maintain.
Why not have a totally separate Zend Framework application for each subdomain, and another separate app for your control panel? Your company (or you yourself) should be able to reconfigure your HTTP server so each subdomain can have its own Document Root. I do this for my own company, which has a similar situation. (Common control panel app with different public-facing apps for different purposes, as well as having a common library of shared code.)
You can share a common library folder in multiple ways. One is if each app adds this folder to its PHP include_path in each app's index.php or Bootstrap.php file. This is how I prefer to do it. Another way is through symbolic links within each app's library folder.
When you deploy a Zend Framework website to a shared host, you usually cannot change the DocumentRoot to point at the public/ folder of the website. As a result the URL to the website is now http://www.example.com/public/.
Apart from choosing a proper host..there's any workaround?
thanks
Luca
If you have access to directories above public, you can put all non public files there.
Otherwise, you can put everything in a subdirectory, and block access to it with an .htaccess file.
The problem I have is that I am trying to put a Zend Framework web application online and while it works perfectly on my localhost, it has a lot of errors online. I know that there are certain things required for a Zend website to work.
I need the document root to be serwano.com/staging/fbr
I need php5
I need mod rewrite on
I need the document root to be serwano.com/staging/fbr.
I have a testing website with the following folder set up:
/webroot(serwano.com)
/staging
/other test site
/other test site
/fbr
/application
/library
/public
I need help determining what the appropriate .htaccess file would be so that my Zend Web App will work.
You can figure the webroot for a domain to point to any folder insider your FTP upload directory, thus you can do
+ userhome
|- serwano.com
|-- staging
|-- test
|-- production
Then go to your 1&1 control panel and create three subdomains for serwano.com. There should be an option to point each subdomain's webroot to the appropriate folder, e.g.
staging.serwano.com // point it to the staging folder
test.serwano.com // point it to the test folder
www.serwano.com // point it to the production folder
Whether you can use .htaccess and mod_rewrite depends on how your webhosting package is configured. Contact 1&1 (prepare for pain) to find out if that is possible. If it is not possible, Google has a number of results for Zend Framework without .htaccess. You do not need mod_rewrite, nor .htaccess. This is just recommended.
I copied & pasted this text here. It seems the editor seems to format some parts randomly. ;)
I downloaded ZendGdata 1.9.6, extracted it & uploaded it to my site's
root folder ..., which I need for use with Youtube API to get videos onto my site.
I must say I’m new to all this, and so I would appreciate taking this into account.
The library folder is at /ZendGdata/library.
The problem I'm having is Step. 3 when I follow instructions
(http://code.google.com/intl/de-DE/apis/gdata/articles/php_client_lib.html#gdata-installation)
for setting it up for that purpose.
Download the Google Data Client Library files.
Decompress the downloaded files. Four sub-directories should be
created:
demos — Sample applications
documentation — Documentation for the client library files
library — The actual client library source files.
tests — Unit-test files for automated testing.
Add the location of the library folder to your PHP path (see the next section)
One of the suggested locations to add the path, apart from the .htaccess file is in php.ini.
My site is on shared hosting. I have no access to the main php.ini file, but I’m allow to create one if I need one. For Drupal CMS, for some functions, it suffices placing one in the root folder.
I added this line:
include_path=".:/usr/lib/php:/usr/local/lib/php:/home/habaris6/
public_html/site.root.folder/ZendGdata/library";
When I however go to mysite.com/ZendGdata/demos/Zend/Gdata/InstallationChecker.php to test the set up, like is mentioned in the
documentation on Youtube, I get the error:
PHP Extension ErrorsTested No errors found
Zend Framework Installation Errors: Tested 0
Exception thrown trying to access Zend/Loader.php using 'use_include_path' = true.
Make sure you include Zend Framework in your include_path which currently
contains: .:/usr/lib/php:/usr/local/lib/php
SSL Capabilities Errors: Not tested
YouTube API Connectivity Errors: Not tested
So my question is: Is that the correct way to “Add the location of the library folder to your PHP path” ?
I’m a bit mixed up.
Someone was saying the php.ini file is only active in the folder where it is located. If that is the case, which of the ZendGdata folders should have it?
As I said, my purpose is to have a the Zend framework properly set up to allow using Youtube API, something I also yet have to learn to do.
In Youtube API Google group, I was referred here. The documentation coming with the downloaded file & at zend.com pre-supposes, one knows much more than some beginners like me.
Another person said I try placing this
$clientLibraryPath = '/home/habaris6/public_html/site.root.folder/ZendGdata/library';
$oldPath = set_include_path(get_include_path() . PATH_SEPARATOR . $clientLibraryPath);
in mysite.com/ZendGdata/demos/Zend/Gdata/InstallationChecker.php
Whereas everything I had tried before failed, except fot the first test, when I placed the above snippet in the installation checker, I got positive tests for everything:
Ran PHP Installation Checker on 2009-12-09T21:16:08+00:00
PHP Extension ErrorsTested: No errors found
Zend Framework Installation Errors Tested No errors found
SSL Capabilities ErrorsTested No errors found
YouTube API Connectivity ErrorsTested No errors found
Does it mean if I place that snippet in install checker, all scripts needing the library can access it?
If not, please let me know what exactly to place in the self-made php.ini & in which folder(s) it should be.
Should that not work, and I were to use .htaccess files, what exactly, based on the folders mentioned above should be the content & exactly which folders should they be in? I read that the .htaccess files should be placed in each folder. Does it really mean I should place one in each of the ZendGdata folders?
I would be grateful for any guidance enabling me to finally start, after failing to sufficient get responses elsewhere.
Thanks in advance.
It's not necessary to put all the ZendGdata code under your website document root. In fact, as a rule I don't put PHP class libraries in a location that can be accessed directly by web requests, because if there's any way to do mischief by invoking the class files directly, then anyone can do it.
Instead, put libraries outside your document root and then reference them from scripts that are run directly. For example, you could create a directory phplib as a sister to your public_html directory. Then upload the ZendGdata bundle under that phplib directory.
You can set your PHP include path in a .htaccess file. You don't need to create a .htaccess file in every directory, because the directives in any .htaccess file apply to all files and directories under the directory where the .htaccess resides. See http://httpd.apache.org/docs/2.2/howto/htaccess.html for more information.
So I would recommend creating a .htaccess file at /home/habaris6/public_html/site.root.folder containing the following directives:
<IfModule mod_php5.c>
php_value include_path ".:/usr/local/lib/php:/home/habaris6/phplib/ZendGdata/library"
</IfModule>
See http://php.net/manual/en/configuration.changes.php for more info on this.
Note that this assumes your webhosting company allows you to use .htaccess files, and that they allow you to use the php_value directive in .htaccess files. Enabling these options is an Apache configuration and they could have their own policies against that for reasons of performance or security. You should contact them for this answer; no one on the internet can answer questions about your hosting provider's policies.
If you choose to use the set_include_path() PHP function to append a directory to your runtime include path, you need to do this in each file that serves as a landing point for a web request. That is, if you permit a request to be made directly to foo.php then you need to add the code to foo.php. Any files or classes subsequently included by foo.php use the include path you defined.
Note also that whatever method you use to define the include path, it has to take effect before your script tries to load any PHP class files via the include path. The .htaccess method should accomplish this, and if you use the code method you just have to put the code high enough in your PHP script.
I don't use the method of creating a custom php.ini file under each directory within your site document tree. That's a new feature of PHP 5.3.0, not supported by earlier versions of PHP. If you're using Apache you should just use .htaccess for the same effect.