Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
567 views
in Technique[技术] by (71.8m points)

.htaccess - Using regular expression in htaccess for 301 redirects

I have a Wordpress blog where I am redirecting blog posts from my old blog to my new blog in the format below:

The old blog is called 'News' and the new blog is simply called 'Blog' - both exist on the same domain in a subdirectory as indicated below.

OLD 'News' blog structure

http://www.example.com/news/new-android-os-3431

NEW 'Blog' blog structure

http://www.example.com/blog/new-android-os

Essentially this redirect needs to do 2 things:-

  1. Redirect to 'blog' directory
  2. Retain the post name in the same structure but remove the last set of numbers at the end of the URL

I have around 900+ posts that I need to setup redirects for - I know I could manually add each one in but that would take some time. Could anyone indicate if this could be using an regular expression directly within the htaccess file to minimise this process?

My htaccess currently looks like this:

# BEGIN WordPress
<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /news/
 RewriteRule ^index.php$ - [L]
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule . /news/index.php [L]
</IfModule>
# END WordPress
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

Using mod_alias:

RedirectMatch 301 ^/news/(.+?)(-[0-9]+)?$ /blog/$1

or using mod_rewrite:

RewriteEngine On
RewriteRule ^news/(.+?)(-[0-9]+)?$ /blog/$1 [L,R=301]

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...