Ok, and so i really aren't well versed about mod_rewrite and I am overlooking the apache paperwork but still not foreseeing this out.
Here's my htaccess (that is mostly just copy &lifier copied and pasted from the site I discovered): .htaccess in base dir:
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ public/ [L] RewriteRule (.*) public/$1 [L] </IfModule>
.htaccess in /public dir:
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond % !-f RewriteCond % !-d RewriteRule ^(.*)$ index.php?url=$1 [PT,L] </IfModule>
Essentially I am while using above htaccess files on my small current test server and delay pills work great and just like I'd expect (everything will get effortlessly rerouted to public dir).
Now after i throw this on my small GoDaddy hosting account i recieve "Internal Server Errror". I have done some searching and I am fairly certain I ought to have the ability to use mod_rewrite with GoDaddy.
I suspect the reason being I am not while using base directory to host the website in. The website is within within the folder html/myapp/ (where html may be the base directory) and i've got a subdomain placed in GoDaddy to appear for the reason that folder.
After checking the mistake logs I check this out-
[Get married Apr 21 17:59:45 2010] [error] [client] mod_rewrite: most of internal redirects arrived at. Presuming configuration error. Use 'RewriteOptions MaxRedirects' to improve the limit if need be.
And So I assume I have produced some kind of infinite loop? But I am unsure how...
Ok I first got it working. heres things i did:
for that .htaccess within the root directory:
<IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine on RewriteRule ^$ /public/ [L] RewriteRule (.*) /public/$1 [L] </IfModule>
but for the one out of /public:
<IfModule mod_rewrite.c> Options +FollowSymlinks RewriteEngine On RewriteCond % !-f RewriteCond % !-d RewriteRule ^(.*)$ /public/index.php?url=$1 [PT,L] </IfModule>
I am honestly unsure why this works, however it does. Because of everything assisted.
Perhaps you have attempted:
Options +FollowSymlinks RewriteEngine on
I recall getting trouble getting mod_rewrite focusing on godaddy.
Rather than using
[R=301,L]. R=301 means redirect with status code 301 (Moved permanently). If you wish to begin to see the other status codes see here. If you do not really redirect, the .htaccess around the root directory would get known as frequently.
<IfModule mod_rewrite.c> RewriteEngine on RewriteRule ^$ public/ [R=301,L] RewriteRule (.*) public/$1 [R=301,L] </IfModule>
How you been with them wouldn't send individuals to the general public directory. And That I still find it looping.
Edit: This will explain the looping.
Edit 2: Rather than
^(.*)$. Apart from that, I am somewhat baffled.
The "Internal Server Error" makes me believe that GoDaddy may have left mod rewrite switched off for the host. Its happened in my experience a minimum of a few occasions on different website hosts. I'd make sure using their support first before wasting a lot of time onto it, simply to be safe and sound.
It's also wise to determine when they provide any kind of apache error logging. If you can get the apache log it ought to be quite simple to look for the source problem.
Edit: I acquired the infinite loop deal after i attempted it in your area too. I want to include a conditional to prevent that from happening. This appeared to operate on my small machine:
RewriteCond % !public RewriteRule (.*) public/$1 [L]