0
votes

I am using Apache 2.2 and mod_rewrite. I would like to take the following urls and map them to another url. The pattern is simple and like this:

http://domain/test/ex1.html -> http://domain/app/index.php/content/?name=ex1

I tried the following in an .htaccess file (place in /test/ directory in docroot):

RewriteEngine On
RewriteBase /app/
RewriteRule (.*)\.html index.php/content/?name=$1

and

RewriteEngine On
RewriteRule (.*)\.html /app/index.php/content/?name=$1

I wasn't sure if the backreference was correct so set to $0 and $2 but never seemed to help.

I also tried setting the RewriteLogLevel to 9.

There is a step where it is almost there: rewrite 'ex1.html' -> 'index.php/content/?name=ex1'

The last line of the rewrite log is as follows: [perdir /var/www/domain/htdocs/test/] internal redirect with /app/index.php/content/ [INTERNAL REDIRECT]

How can I get this to rewrite to /app/index.php/content/?name=ex1 ?

EDIT so using this as an .htacces in the docroot file works for the RedirectMatch:

RewriteEngine On 
RewriteBase /
RedirectMatch ^(.*)/(.*)\.html$ http://domain/app/index.php/content/?name=$2
 #this doesnt work - adding to docroot allows for it to pick up but still using test/ex1 rather than just ex1
#RewriteRule ^(.*)\.html$ /app/index.php/content/?name=$1

Any help getting the bottom RewriteRule (that is currently commented out) to work would be appreciated.

thanks

2

2 Answers

1
votes

In your example you mentioned domain/test/ so I'm going based of rewriting from /test/*.html to /app/index.php/content/?name=

RewriteEngine On
RewriteBase /
RewriteRule ^test/(.*)\.html$ /app/index.php/content/?name=$1

That should work.

0
votes

Uhm, off the top of my head:

RewriteCond %{REQUEST_URI} ^/app/(.*)\.html$
RewriteRule ^/app/(.*)\.html$ /app/index.php/content/?name=$1

This assumes that the rewrite base is /