Rishi Mehta
Rishi Mehta

Reputation: 73

Rewrite with htaccess not working

i have a site wich have a dynamic url for 3 pages only. and for that i dont go for php function. So I decided to go for .htaccess rewrite rules but I am not having any luck yet.

This is my actual url: /index.php?mode=service&inid=1

I want to rewrite it to this: /home-theater

I try it my self and with this code:

RewriteEngine On 

RewriteCond %{HTTP_HOST} !^www\.mysite\.com.au$ [NC]
RewriteRule ^(.*)$ http://www.mysite.com.au/$1 [L,R=301]

Options +FollowSymLinks
DirectoryIndex index.php

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.mysite.com.au/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^home-theater/?$ index.php?mode=service&inid=1 [L,NC,QSA]

I still can't get it to work.

Also I write index.php to www redirect before this code, so I guess if it cause any issue or not. index.php to www site redirects work perfectly but this is not working.

Upvotes: 1

Views: 162

Answers (1)

anubhava
anubhava

Reputation: 786289

Use L flag like this:

RewriteRule ^home-theater/?$ index.php?mode=service&inid=1 [L,NC,QSA]

Remember this will not change the URL in the browser since this will internally forward request to your index.php.

Also if this doesn't work then provide your full .htaccess in your question.

Update: I have modified your .htaccess here, please try it out now after clearing your browser cache:

DirectoryIndex index.php

Options +FollowSymLinks -MultiViews
RewriteEngine On 
RewriteBase /

RewriteCond %{HTTP_HOST} !^www\.mysite\.com.au$ [NC]
RewriteRule ^(.*)$ http://www.mysite.com.au/$1 [L,R=301]

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^ http://www.mysite.com.au/ [R=301,L]

RewriteRule ^home-theater/?$ index.php?mode=service&inid=1 [L,NC,QSA]

RewriteCond %{ENV:REDIRECT_STATUS} !200
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ /index.php [L]

Upvotes: 1

Related Questions