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.ex开发者_Go百科ample.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.
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
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/removedstring/
RewriteRule ^removedstring/(.*)$ https://www.domain.eu/$1 [L,NC,R=301]
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¶m2=$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¶m2=mission [L,qsa]
RewriteRule ^content/(.*)/(.*)$ /content.php?param1=$1¶m2=$2 [L,qsa]
These are just examples - it will really depend on what your existing rules are.
# 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.
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
精彩评论