mohammad taheri
mohammad taheri

Reputation: 73

htaccess redirect to subfolder with url paramethers

I want to redirect every requests to my public/index.php file. i've tried

RewriteEngine On 
    
RewriteRule ^(.*)$ public/index.php?url=$1

code that seems fine but its not working. my goal is change url form http://example.com/?url=user/profile/2 to http://example.com/user/profile/2. my directory structure is

Upvotes: 3

Views: 568

Answers (2)

mohammad taheri
mohammad taheri

Reputation: 73

heres the solution: uncoment (remove # ) mod_rewrite.so module in httpd.conf file in apache2 (in my case c:\Apache24\conf\httpd.conf) file. also change AllowOverride none to AllowOverride All in that file under DocumentRoot "${SRVROOT}/htdocs" section.

and this is .htaccess content

RewriteEngine on

RewriteRule ^(.*)$ public/index.php?url=$1 [QSA,L]
RewriteRule ^()$ public/index.php?url=$1 [QSA,L]

however if you need to get static files in your static directory add a new .htaccess file inside static directory with RewriteEngine off content

Upvotes: 1

RavinderSingh13
RavinderSingh13

Reputation: 133640

To handle URLs like: http://example.com/user/profile/2 please try following Rules sets in your .htaccess file. Place your htaccess rules file into root directory. Please make sure to clear your browser cache before testing your URLs.

Options -MultiViews
RewriteEngine ON
RedirectBase /ApadanaCMS/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)/(.*)/?$ public/index.php?url=$1/$2/$3 [L]


OR try following rules, please make sure either try above OR following rules at a time only.

Above will work for non-existing pages, to make it for any url(like you mentioned in your question) try:

Options -MultiViews
RewriteEngine ON
RedirectBase /ApadanaCMS/
RewriteCond %{REQUEST_FILENAME} !index\.php [NC]
RewriteRule ^([^/]*)/([^/]*)/(.*)/?$ public/index.php?url=$1/$2/$3 [L]

Upvotes: 1

Related Questions