Hello!
I moved my opencart script from subfolder store/ to site root. In index of search engines there are links which point to old locations, for example:
mysite.tld/store/page24?limit=25
mysite.tld/store/page503
Some of those pages with parameters, some are not. I need them to be redirected like this:
mysite.tld/store/page24?limit=25 >>> mysite.tld/page24?limit=25
mysite.tld/store/page503 >>> mysite.tld/page503
I’m setting up .htaccess rules and to the moment ended with following directive:
RedirectMatch 301 ^/store/(.*)$ http://mysite.tld/$1
But it doesn’t work because of this directive:
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
…or in such variant:
RewriteRule ^(.*) index.php?_route_=$1 [L,QSA]
I would remove last mentioned directive, but it is responsible for seo urls in opencart.
Please help me to write proper directives, preferably using rewriterule, rewritecond (not RedirectMatch). I’ve read some manuals, like http://datakoncepts.com/SEO but all i’ve tried don’t work:
RewriteCond %{HTTP_HOST} ^mysite\\.tld/store/$ [NC]
RewriteRule .? http://mysite.tld/$1 [R=301,L]
RewriteMap noname txt:/domens/mysite.tld/1.txt
RewriteCond %{HTTP_HOST} ^mysite\\.tld/store
RewriteRule ^(.*)$ http://mysite.tld/$1 [R=301,L]
RewriteRule ^mysite\\.tld/store/(.*)$ http://mysite.tld/$1 [R=301,L]
My current .htaccess:
# 1.To use URL Alias you need to be running apache with mod_rewrite enabled.
# 2. In your opencart directory rename htaccess.txt to .htaccess.
# For any support issues please visit: http://www.opencart.com
Options +FollowSymlinks
# Prevent Directoy listing
Options -Indexes
# Prevent Direct Access to files
<FilesMatch "\\.(tpl|ini|log)">
Order deny,allow
Deny from all
</FilesMatch>
# SEO URL Settings
RewriteEngine On
# If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/
RewriteBase /
RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
# disabled in ocstore 1.5.3.1:
#RewriteRule ^yandexmarket.xml$ index.php?route=feed/yandex_market [L]
# to www 301 redirect (in case it will be needed)
# RewriteCond %{HTTP_HOST} !^www\\.
# RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
# to non-www 301 redirect
RewriteCond %{HTTP_HOST} ^www\\.
RewriteRule ^(.*)$ http://mysite.tld/$1 [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^(.*) index.php?_route_=$1 [L,QSA]
### Additional Settings that may need to be enabled for some servers
### Uncomment the commands by removing the # sign in front of it.
### If you get an "Internal Server Error 500" after enabling any of the following settings, restore the # as this means your host doesn't allow that.
# 1. If your cart only allows you to add one item at a time, it is possible register_globals is on. This may work to disable it:
# php_flag register_globals off
# 2. If your cart has magic quotes enabled, This may work to disable it:
# php_flag magic_quotes_gpc Off
# 3. Set max upload file size. Most hosts will limit this and not allow it to be overridden but you can try
# php_value upload_max_filesize 999M
# 4. set max post size. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value post_max_size 999M
# 5. set max time script can take. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_execution_time 200
# 6. set max time for input to be recieved. Uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields
# php_value max_input_time 200
# partially working redirect
#RedirectMatch 301 ^/store/(.*)$ http://mysite.tld/$1