I have PHP oscommerce website, in which I have used htaccess for url rewriting to hide file names, now the problem i am facing is that my local server cannot replicate the htaccess as it should be doing, It is working perfect in live site..
Can some suggest what could be the reason?
EDITED
Below Is the htaccess rewrite rule i am using, i have replaced my original sites name with “mydomain” for security purpose:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^mydomain.com [NC]
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [L,R=301]
#INDEX PAGE
#----------
RewriteRule http://www.mydomain.com/index.html http://www.mydomain.com/ [R]
RewriteRule http://www.mydomain.com/index.php http://www.mydomain.com/ [R]
RewriteRule ^index.html index.php [NC]
#STATIC PAGES
#------------
RewriteRule ^about-us.html information.php?info_id=1 [NC]
RewriteRule ^faqs.html information.php?info_id=8 [NC]
RewriteRule ^contact-us.html contact_us.php?info_id=9 [NC]
RewriteRule ^terms-and-conditions.html information.php?info_id=10 [NC]
RewriteRule ^privacy-policy.html information.php?info_id=3 [NC]
#RewriteRule ^we-design-your-banner-free.html information.php?info_id=11 [NC]
RewriteRule ^vinyl-banner-samples.html vinyl_banner_sample.php [NC]
RewriteRule ^art-specifications.html art_specification.php [NC]
RewriteRule ^sitemap.html sitemap.php [NC]
#checkout - my account pages
#---------------------------
#RewriteRule ^account.html account.php?$1 [NC]
#RewriteRule ^checkout.html checkout.php?$1 [NC]
Now the problem goes like this:
I have a link which is like:
<a href="/about_us.html" title="About Us" class="footertext_link">About Us</a>
Now in local machine when i click this link I am navigated to url
http://192.168.1.55/about_us.html
rather it should be navigated to
http://192.168.1.55/mydomain/about_us.html
expected url is available on live server according to its domain name, but on local I get Page not found..
Please help
4
Answers
what you are using in local xampp, wamp or any other , you may need to enable htaccess
i m considering u are using xampp or recommend to use it.
Depending on the AccessFileName setting, your local Apache installation might use another name, for example _htaccess.
Furthermore, make sure that the AllowOverride directive is not set to None.
Further documentation can be found in the .htaccess tutorial.
Your comment to JapanPro’s answer suggests to me that your site is indeed in a subdirectory on your local server, in which case the likely reason that it doesn’t work correctly (based on this and your other question) is because URL structure is different than your live server (it lives at the root there, but not in your local environment).
To fix this, you need to configure Apache to use a name-based virtual host, then add an entry in your hosts file that corresponds to the name you chose. Then you will use that domain name to access your site, and because the URL structure will be consistent with your live site, it should work correctly.
Example:
C:WindowsSystem32driversetchosts
httpd.conf
Edit: Here’s a more in-depth description of setting up virtual hosts and editing in a new host entry that should hopefully explain this process better than I have.
RewriteCond %{HTTP_HOST} ^mydomain.com [NC]
If the host is [starts with (^)] mydomain.com,
rewrite it to http ://www.mydomain.com/$1
If the host is not(!) mydomain.com,