Salman Aslam
Salman Aslam

Reputation: 781

How to remove part of URl with .htaccess?

Currently, I have 20+ URLs on my site in this format

http://www.example.net/content/index/mission

I want to remove /content/index from all URLs, so they should look something like this

http://www.example.net/mission

In other words, I would always remove /content/index from the URL. I'm sure it's really straightforward, but I'm not very experienced with Apache.

Upvotes: 14

Views: 40185

Answers (5)

Robert G.
Robert G.

Reputation: 337

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/removedstring/
RewriteRule ^removedstring/(.*)$ https://www.domain.eu/$1 [L,NC,R=301]

Upvotes: 2

Paul Dixon
Paul Dixon

Reputation: 301085

I'm going to guess you already have some rewrite rules in place for URLs like http://www.example.net/content/index/mission

You need to find these rules and add a new one which uses a similar structure but 'hard codes' the content/index parts, for example, suppose the existing one was

RewriteRule ^content/(.*)/(.*)$ /content.php?param1=$1&param2=$2 [L,qsa]

You'd want to make a new rule to pick up /mission and rewrite it in a similar way, but before the existing rule kicks in, e.g.

RewriteRule ^mission$ /content.php?param1=index&param2=mission [L,qsa]
RewriteRule ^content/(.*)/(.*)$ /content.php?param1=$1&param2=$2 [L,qsa]

These are just examples - it will really depend on what your existing rules are.

Upvotes: 1

user958541
user958541

Reputation: 1

I also have a script I wrote that you put on your server then browse to it via internet browser and it can confirm if you have mod_rewrite on your server. The way I showed you works 100% as long as mod_rewrite is enabled

Upvotes: 0

user958541
user958541

Reputation: 1

  # Get rid of index.php
  RewriteCond %{REQUEST_URI} /index\.php
  RewriteRule (.*) index.php?rewrite=2 [L,QSA]

  # Rewrite all directory-looking urls
  RewriteCond %{REQUEST_URI} /$
  RewriteRule (.*) index.php?rewrite=1 [L,QSA]

Or just add index.html depending on whatever extention you want to remove and MOD_REWRITE is required on Apache for this to work. Thank you.

Upvotes: 0

janoliver
janoliver

Reputation: 7824

You would need the rewrite module of Apache: mod_rewrite.

Then do something like this:

RewriteEngine on 
RewriteRule ^content/index/(.*)$ $1

Here is the official documentation of mod_rewrite: click

Upvotes: 19

Related Questions