I have just recently setup a new development environment and ever since I have been unable to access any page on my site outwith the homepage.
For instance, if I go to: http://www.herpandderp.com/contact_us it throws a 404 error.
There is no directory called /contact_us and I have code in my index.php that handles the URL as a parameter, takes it in and will include/require the appropriate code as required.
This is the entry in my root .htaccess:
RewriteRule ^([^.]+)$ /index.php?url=$1 [L,QSA]
If I do a phpinfo, I get the following under apache2handler (so I know mod_rewrite is installed):
Loaded Modules core prefork http_core mod_so mod_auth_basic
mod_auth_digest mod_authn_file mod_authn_alias mod_authn_anon
mod_authn_dbm mod_authn_default mod_authz_host mod_authz_user
mod_authz_owner mod_authz_groupfile mod_authz_dbm mod_authz_default
mod_log_config mod_logio mod_env mod_mime_magic mod_expires
mod_deflate mod_headers mod_usertrack mod_setenvif mod_mime mod_status
mod_autoindex mod_info mod_vhost_alias mod_negotiation mod_dir
mod_actions mod_speling mod_userdir mod_alias mod_rewrite
mod_cache mod_disk_cache mod_file_cache mod_mem_cache mod_perl
mod_php5 mod_ssl
Is there any reason why, if I go to /contact_us that I don’t go through index.php? I’ve got a die on line 1 of the script and it’s not hitting it. However, it does work when I do http://www.herpandderp.com/?url=contact.
I feel this is an apache configuration issue, as the code runs on other environments fine.
Make sure that in your httpd.conf, that the site in question has AllowOverride all set, other wise the rewrite won’t be able to over ride the default settings for that site.