Invision Community 4: SEO, prepare for v5 and dormant account notifications Matt November 11, 2024Nov 11
Posted January 30, 201015 yr Currently my forum is in domain.com/forums and i want to remove the /forums off the url. Problem is i don't want to have to move all the files on the server as it will mean my root dir is very messy. I also want to rewrite any old urls to the new path so any old links/indexes still work. Ive tried the following.. RewriteEngine on RewriteRule ^index.php(.*)$ forum/index.php$1 [L] RewriteRule ^forum/(.*)$ /$1 [R,L] But this is causing a redirect loop. Any ideas?
January 31, 201015 yr It would appear that what you want is something like this:RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule (.*) forum/$1 [L] The above allows URLs with or without "forum" to point to the correct files, so old links will work as well as new ones. Of course, you'd need to alter whatever code you're using to generate the visible URLs so that they use the new URL format rather than the old format, but that's beyond the scope of mod_rewrite.
March 27, 201015 yr Author Got it working. RewriteEngine On # Externally redirect to add missing trailing slashes to directory requests RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^(.*[^/])$ http://www.yoururl.com/$1/ [R=301,L] # Map http://www.example.com/ to /forum/ subdirectory RewriteRule ^$ /forum/ [L] # Map http://www.example.com/x to /forum/x unless there is a x in the web root. RewriteCond $1 !^forum/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /forum/$1 [L] # check we're not already internally redirecting and 301 the old links to new location RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteRule ^forum/(.*)$ /$1 [R=301,NC,L]
Archived
This topic is now archived and is closed to further replies.