How to re-direct a bunch of legacy URLs?
This is an open discussion with 6 replies, filed under General.
Search
URL Router should do, I think. Something along the lines of:
From:
/\/index\.php\/global\/article\/(.*?)\//i
To:
/blog/article/$1/
The dot must be escaped.
Thanks but the index.php bit is causing some trouble.
It seems to be re-directing everything after the root, including image paths etc.
Is there any way to fix this?
This works, however:
/\/global/article\/(.*?)\//i
To:
/blog/article/$1/
If your webserver is set to serve files that exist on the filesystem directly to the browser without invoking PHP, I wouldn't have thought images would be an issue. If using Apache, I believe Symphony's default .htaccess file does direct Apache to serve real files directly.
Could you give examples of some routes which are being redirected that shouldn't be?
For example the logo of the website.
Is is stored under http://www.mywebsite.com/workspace/images/logo.png
.
But when I set up the routes as suggested by animaux and then hit http://www.mywebsite.com/index.php/global/article/symphony-voted-best-cms-ever
, the page-not-found template gets served and the logo path gets replaced with http://www.mywebsite.com/index.php/workspace/images/logo.png
which is not what I want.
Could you post your .htaccess
file (if it's Apache you're using) and a screenshot of URL Router's routes in the Symphony UI?
### Symphony 2.6.x ### Options +SymLinksIfOwnerMatch -Indexes <IfModule !mod_rewrite.c> SetEnv HTTP_MOD_REWRITE No </IfModule> <IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews </IfModule> RewriteEngine on RewriteBase / ### SECURITY - Protect crucial files RewriteRule ^manifest/(.*)$ - [F] RewriteRule ^workspace/(pages|utilities)/(.*).xsl$ - [F] RewriteRule ^(.*).sql$ - [F] RewriteRule (^|/). - [F] ### DO NOT APPLY RULES WHEN REQUESTING "favicon.ico" RewriteCond %{REQUEST_FILENAME} favicon.ico [NC] RewriteRule .* - [S=14] ### SASS RULES RewriteRule ^sass/(.+.sass)$ extensions/sass_compiler/lib/sass.php?mode=sass¶m=$1 [L,NC] RewriteRule ^scss/(.+.scss)$ extensions/sass_compiler/lib/sass.php?mode=scss¶m=$1 [L,NC] ### IMAGE RULES RewriteRule ^image/(.+)$ extensions/jit_image_manipulation/lib/image.php?param=$1 [B,L,NC] ### CHECK FOR TRAILING SLASH - Will ignore files RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !/$ RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*)$ $1/ [L,R=301] ### URL Correction #RewriteRule ^(symphony/)?index.php(/.*/?) $1$2 [NC] RewriteRule ^(/)?index.php(/.*/?) $1$2 [NC] ### ADMIN REWRITE RewriteRule ^symphony/?$ index.php?mode=administration&%{QUERY_STRING} [NC,L] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^symphony(/(.*/?))?$ index.php?symphony-page=$1&mode=administration&%{QUERY_STRING} [NC,L] ### FRONTEND REWRITE - Will ignore files and folders RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*/?)$ index.php?symphony-page=$1&%{QUERY_STRING} [L] </IfModule> ######
Create an account or sign in to comment.
Hello
I just migrated an old Expression Engine blog to Symphony and now I need to forward the old URLs to the new ones.
The old URL structure looks like this:
And the new one like this:
Any idea how this can be done?
I already tried the URL Router extension which looks great but can't handle legacy URLs (it seems?). Adding rewrite rules to Symphony's .htaccess file might be an option. But I'm worried that this might affect any existing rewrite rules in that file.
Thanks for any help.