Solved

Problem with rewrite access

Posted on 2014-09-22
16
84 Views
Last Modified: 2014-10-02
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
0
Comment
Question by:stargateatlantis
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 9
  • 7
16 Comments
 

Author Comment

by:stargateatlantis
ID: 40337714
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
 
LVL 50

Expert Comment

by:Steve Bink
ID: 40337748
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
 

Author Comment

by:stargateatlantis
ID: 40338190
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
Connect further...control easier

With the ATEN CE624, you can now enjoy a high-quality visual experience powered by HDBaseT technology and the convenience of a single Cat6 cable to transmit uncompressed video with zero latency and multi-streaming for dual-view applications where remote access is required.

 
LVL 50

Expert Comment

by:Steve Bink
ID: 40338213
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
 

Author Comment

by:stargateatlantis
ID: 40338280
No page it should stay on the same page
0
 
LVL 50

Expert Comment

by:Steve Bink
ID: 40338480
Then what page do you want redirected to that URL?
0
 

Author Comment

by:stargateatlantis
ID: 40338811
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
 

Author Comment

by:stargateatlantis
ID: 40339066
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
 
LVL 50

Expert Comment

by:Steve Bink
ID: 40339320
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
 

Author Comment

by:stargateatlantis
ID: 40339430
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
 

Author Comment

by:stargateatlantis
ID: 40339775
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
 
LVL 50

Accepted Solution

by:
Steve Bink earned 500 total points
ID: 40340294
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
 

Author Comment

by:stargateatlantis
ID: 40340325
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
 
LVL 50

Expert Comment

by:Steve Bink
ID: 40340341
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
 

Author Comment

by:stargateatlantis
ID: 40340679
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
 
LVL 50

Expert Comment

by:Steve Bink
ID: 40340733
How do you determine which URLs do *not* redirect to /site/public?
0

Featured Post

Don't Miss ATEN at InfoComm 2017!

Visit booth #2167 to see the  new ATEN VM3200 32 x 32 Modular Matrix Switch. Other highlights include the VE8950 4K HDMI Over IP Extender, VS1912 12-Port DP Video Wall Media Player  and VK2100 ATEN Control System. Register now with Free Pass Code ATEN288!

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

If you've heard about htaccess and it sounds like it does what you want, but you're not sure how it works... well, you're in the right place. Read on. Some Basics #1. It's a file and its filename is .htaccess (yes, with a dot in the front). #…
This article discusses four methods for overlaying images in a container on a web page
This tutorial will teach you the core code needed to finalize the addition of a watermark to your image. The viewer will use a small PHP class to learn and create a watermark.
The viewer will learn how to create a basic form using some HTML5 and PHP for later processing. Set up your basic HTML file. Open your form tag and set the method and action attributes.: (CODE) Set up your first few inputs one for the name and …

752 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question