Problem with rewrite access

In my .htaccess file I have the following but the problem is when i type mydomain.com/site/info/?id=234
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/?site/(.*)$ /site/public/$1
</IfModule>

Open in new window


As soon as I type /?id=234 it redirects back to mydomain.com/site.  Is there any way to fix this.  What do I need to change in my .htaccess file
stargateatlantisAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

stargateatlantisAuthor Commented:
I tried the following but didn't work

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteRule ^/?site/(.*)$ /site/public/$1
RewriteCond %{QUERY_STRING} ^id=([^&]+)$
RewriteRule ^\enhance\site\$ %1/ [L]

</IfModule>

Open in new window

0
Steve BinkCommented:
As your additional post demonstrates, only the URL - not the query string - is tested in RewriteRule.  To rewrite or redirect based on the query string, you need a RewriteCond directive.

Please post the specific information required to generate the rule(s) you need:
The URL the user types in
The URL that should be delivered in response
Should the user see the URL they typed, or the URL you are actually delivering?
0
stargateatlantisAuthor Commented:
So basically  I want the ability to type the following in the URL browser and the user should see what they have typed

http://www.mydomain.com/site/?id=1234

But the following .htaccess needs to be modified

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/?site/(.*)$ /site/public/$1
</IfModule>

Open in new window

0
Cloud Class® Course: Ruby Fundamentals

This course will introduce you to Ruby, as well as teach you about classes, methods, variables, data structures, loops, enumerable methods, and finishing touches.

Steve BinkCommented:
If I put http://www.mydomain.com/site/?id=1234 into my address bar, what page do you want it to go to on your site?
0
stargateatlantisAuthor Commented:
No page it should stay on the same page
0
Steve BinkCommented:
Then what page do you want redirected to that URL?
0
stargateatlantisAuthor Commented:
When the user types http://www.mydomain.com/site/?id=1234  it stays on that page

My Current .htaccess is this

The site files are located under /site/public

Thanks for the help

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/?site/(.*)$ /site/public/$1
</IfModule>

Open in new window

0
stargateatlantisAuthor Commented:
I tried the following but it didn't work

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteRule ^/?site/(.*)$ /site/public/$1
RewriteRule ^([a-z]{2,2})/([a-zA-Z0-9_-]+)$ site/?id=$1

</IfModule>

Open in new window

0
Steve BinkCommented:
Let's start again.  You have a real, actual page on your site.  Let's call it URL-A.  The user browses to your site by typing "http://yourdomain.com/URL-B" into their address bar.  What I need to know:

What is the actual address for URL-A?
What is the actual address for URL-B?
Will the user see URL-A or URL-B in the address bar?
0
stargateatlantisAuthor Commented:
So when typing www.mysite.com/site it will access the following folder /site/public/.

When typing

www.mysite.com/site/subdir/?id=1

It will still access the folder on the server /site/public/.

I don't need the url rewritten to this
www.mysite.com/site/subdir/id/1

I just want it so that when i type any url variable after slash it will not redirect to www.mysite.com/site/
0
stargateatlantisAuthor Commented:
I tried the following but no luck

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/?site/(.*)$ /site/public/$1
RewriteRule ^([a-z]{2,2})/([a-zA-Z0-9_-]+)$ /site/?id=$1 [QSA]
</IfModule>

Open in new window

0
Steve BinkCommented:
To restate, you want all unadorned requests to /site to be forwarded to /site/public.  If the request is adorned with a query string, then do not rewrite.  Is that correct?
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^/?site/(.*)$ /site/public/$1 [NC]

Open in new window

0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
stargateatlantisAuthor Commented:
Thanks Steve so this is the issue as soon as i type a

http://www.mysite.com/site/dir/?id=1 
it redirects to http://www.mysite.com/site/ 
and there is no files in that directory.  

What should happen when the user types in
http://www.mysite.com/site/dir/?id=1 
the url shouldn't change but it should read all the files in the public folder that is why i have the following in my .htaccess now

What is throwing it off is the /?id=1 or any variables.  

Thanks for all the help guys I know its confusing.  

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^/?site/(.*)$ /site/public/$1
</IfModule>

Open in new window

0
Steve BinkCommented:
So, if I browse to www.mysite.com/site/dir/?id=1, then you want it to actually look for www.mysite.com/site/public/dir/?id=1.  Is that correct?
RewriteRule ^/?site/(.*)$ /site/public/$1 [QSA]

Open in new window

0
stargateatlantisAuthor Commented:
If i browse to

 www.mysite.com/site/dir/?id=1

I want it to stay there

what is happening the site redirects to

 www.mysite.com/site/?id=1

which is wrong

Thanks Steve for the help
0
Steve BinkCommented:
How do you determine which URLs do *not* redirect to /site/public?
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Apache Web Server

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.