.htaccess not working on new Debian 8 setup - .htaccess

So I've just set up Debian 8 on a new server, enabled a2enmod and restarted. However my links aren't working, and when I try to go in to sites-available and default I have this:
<VirtualHost *:80>
ServerAdmin webmaster#localhost
DocumentRoot /var/www
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
I'm trying to change None to all, however this is still not working and is giving an error below:
Not Found
The requested URL /tos was not found on this server.
Can anyone help out on this please?
When I change them to All instead of None, it just reloads the homepage?

What if you change AllowOverride None to AllowOverride All ?

I know this is 20 months late, but in case someone else looks for an answer here, maybe you just need to restart the server.
something like:
sudo service apache2 graceful

Related

Apache2, setup dynamic subdomains on localhost

Simple question how?
Now I have such enabled host
<VirtualHost *:80>
ServerAdmin webmaster#localhost
ServerName git.land
DocumentRoot /home/sergey/public_html/git.land/public_html
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/sergey/public_html/git.land/public_html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
And added rule in hosts
127.0.0.1 git.land
When I enter on "http://git.land" it show proper direction. But when I try to get in "http://some.git.land" is stucks. Thinks a lot and then redirect on prev. page (without subdomain).
I want add subdomains to localhost for testing but I don't know what should I use for it. Base things I knew, I tried but it gives nothing.
Also can I (maybe) somehow change it from .htaccess (I searched around and found people use them to get subdomains name without any configuration in hosts).
Problem solved by this config file
<VirtualHost *:80>
DocumentRoot /home/sergey/public_html/git.land/public_html
ServerName other.land
ServerAlias *.land
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster#localhost
ServerName land
DocumentRoot /home/sergey/public_html/git.land/public_html
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /home/sergey/public_html/git.land/public_html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit, alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
It works ONLY when all cases (I mean subdomains) setup in hosts.

mod_rewrite not reading htaccess

I'm trying to enable mod_rewrite on server. My web is located in folder /data/web/new-domovreality.sk/web. There are .htacces and index.php files in this folder.
My current
etc/apache2/sites-available/default
<VirtualHost *:80>
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
<Directory /data/web/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride All
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
I've read I think every instructions to enable it, but I'm not able to. Can someonehelp me? I'm doing this first time. Thanks
When I use phpinfo() there is mod_rewrite enabled.
So, the solution was to change the * to IP address, so in final
<VirtualHost *:80>
looks like this:
<VirtualHost 37.9.170.195:80>

404 not found after activating Joomla 2.5 URL rewriting at localhost

I have a copy of my website at localhost at:
/var/www/vhosts/mysite.com/httpdocs
This is my /etc/apache2/sites-available/mysite
<VirtualHost *:80>
ServerAdmin webmaster#localhost
DocumentRoot /var/www/vhosts/mysite.com/httpdocs
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
I've copied htaccess.txt to .htaccess. When I activate friendly URL and URL rewriting, I get 404 errors.
I've uncommented this lines in .htaccess, but still does not work:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
I also tried to change rewritebase to
RewriteBase /mysite
with no luck.
What I'm doing wrong?
No sure if this is the issue you are experiencing, but I have experienced that rewriting does not work well on "localhost". Try and change your hosts file to say
127.0.0.1 mysite.local
And then access it on that url.
Not sure if that will work but it is worth a try.
Solved!
I had a conflict with different entries in /etc/apache2/sites-available.
When I create a new site at localhost, I copy default to mysite, and modify the mysite file to point to it's DocumentRoot.
I don't know exactly why, but if I disable default site:
sudo a2dissite default
it works.
Maybe this does'nt solve the question, but I prefer to issue another question more specific to this problem, because I've tested and it's related to different sites enabled and one or more with RewriteEngine enabled.

Enable htaccess error on Ubuntu 12.04 with Apache2

I tried to enable htaccess. I changed:
<Directory /var/www/abc.biz/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
To:
<Directory /var/www/abc.biz/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
But I'm getting 500 (Internal Server) error. Why?
Here is my /etc/apache2/sites-available/default file:
<VirtualHost *:80>
ServerAdmin admin#abc.biz
DocumentRoot /var/www/abc.biz
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/abc.biz/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
I think you need to change this part of your /etc/apache2/sites-available/default
DocumentRoot /var/www/abc.biz
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/abc.biz/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
to
DocumentRoot /var/www/abc.biz
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/abc.biz/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
Because at first <Directory /> AllowOverride All you allow to override settings with your .htaccess file for the whole apache, but also you need to change it at <Directory /var/www/abc.biz/> AllowOverride All for your specific host directory, where your web site is placed.
Also you should check .htaccess files placed in your /var/www/abc.biz directory to be correctly writen, because when you enable .htaccess files to override global apache settings wrong .htaccess file causes such error.

Problems with configuring Apache for mobile website

I am having some trouble with configuring Apache for a website that has both a normal and mobile version. The idea was to redirect the user with a mobile browser automatically to the mobile version and if someone on a normal desktop PC is trying to connect to the mobile version to redirect it to the normal website.
Right now it redirects a mobile user to the mobile website correctly. But it is seems to be unable to redirect the other way to the desktop version. Also, when you go to the mobile version of the website, it displays the default "It works!" page instead of the mobile index page for some reason..
Here is all the configuration that I used. Hopefully someone is able to help me out with this. Thanks in advance!
Normal website:
<VirtualHost *:80>
ServerAdmin webmaster#henal.local
ServerName henal.local
ServerAlias www.henal.local
DocumentRoot /var/www/henal.local
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/henal.local>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
DirectoryIndex index.html
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/deltionkrant/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel debug
CustomLog ${APACHE_LOG_DIR}/deltionkrant/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
.htaccess normal website:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "android|blackberry|googlebot- mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos" [NC]
RewriteRule ^$ http://m.henal.local/ [L,R=302]
Mobile website:
<VirtualHost *:80>
ServerAdmin webmaster#henal.local
ServerName m.henal.local
ServerAlias henal.local
DocumentRoot /var/www/henal.local/mobile
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/henal.local/mobile>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
DirectoryIndex index.html
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
.htaccess mobile webiste:
RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} "!(android|blackberry|googlebot- mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos)" [NC]
RewriteRule ^$ http://www.henal.local/ [L,R=302]
Ok - so you are trying to do content negotiation here and you are regexing on the user agent. Aside from the rewrtile rules you have, you need to consider the following:
Using the Apache Mobile Filter instead of a Regex. It is more accurate and provides a greater range of features
You should allow users to choose the representation/experience that they want. So if you are presenting them with the mobile version, then you should let them choose the desktop version instead since this might actually have been what they wanted; and vice versa.
This could be for a plethora of reasons e.g they have bookmarks to the desktop, someone shared a url to the desktop version etc. etc. Your content negotiation technique is pretty basic and doesn't take into consideration any of these use cases.
Having considered this, specific to your problems above:
Try removing the quotes from your RewriteCond patterns and add the R=302 and L flag to make sure now other rewrite directives are executed. i.e:
RewriteCond %{HTTP_USER_AGENT} !(android|blackberry|googlebot- mobile|iemobile|ipad|iphone|ipod|opera mobile|palmos|webos) [NC,R=302,L]
Secondly its likely that you are seeing the default desktop "it works" because you are testing on a desktop browser and being redirected to the desktop host.
Slight tangent, in response to William Greenly's
"Since your DNS is not externally resolvable, then you won't be able to use your mobile phone to test."
FYI Pagekite (http://pagekite.net/) makes it easy to expose localhost to the net, in order to facilitate testing stuff on your dev machine from your phone.
HTH someone out there.

Resources