Custom SEO URL of Product page in opencart 2.x - php

I am looking for some help on writing custom dynamic SEO URLS for my product and category pages in opencart 2.x
I want to achieve www.example.com/my-keyword/product-name-keyword/ and for category www.example.com/my-cat-keyword/cat-name-keyword/
I tried modifying the code in (/catalog/controller/common/seo_url.php) as below and the URL is being generated in the front-end but when I click on the product name / image it gives 404.
if ($query->num_rows && $query->row['keyword']) {
$url .= '/product/' . $query->row['keyword'];
unset($data[$key]);
}
Here is my 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 "(?i)((\.tpl|\.ini|\.log|(?<!robots)\.txt))">
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]
RewriteRule ^system/download/(.*) /index.php?route=error/not_found [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
# 7. disable open_basedir limitations
# php_admin_value open_basedir none

This is the only code you have to update or any else which faces this kind of problem (mostly)
# If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/
# RewriteBase /
uncomment this line and add your Opencart path if you have any and you have (i checked in your link). So it will be
Rewritebase /projects/bnw-collections/alpha/
and rename your htaccess.txt to .htaccess . Hope this will help.

Related

How to redirect with .htaccess file in wamp server

Hey guys im trying to prevent that anybody can access the homepage of my wamp server.
So if somebody types www.example.com then it shows the homepage of the wamp server.
But if somebody tries to enter the www.example.com site then it should be redirected to www.example.com/moodle
This is what i tried so far in the .htaccess file:
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !/moodle$ [NC]
RewriteRule .* /moodle [R=302,L]
</IfModule>
It seems like its creating an infinitive loop.
Here is my whole .htaccess file:
# On some PHP servers it may help if this file is copied
# to the main moodle directory and renamed .htaccess
#
# As soon as you do this, check your web site. Is it
# still working OK? If you are getting a "configuration
# error" then you may need to enable overrides by editing
# the main httpd.conf for Apache and in the main server
# or virtual server area, adding something like:
#
# <Directory /web/moodle>
# AllowOverride All
# </Directory>
#
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^((?!moodle/).*)$ moodle/$1 [NC,L]
</IfModule>
### Firstly, if you are using Apache 2, you need the following
### three lines to allow Apache to pass a PATH_INFO variable
### correctly for URLs like http://server/file.php/arg1/arg2
<IfDefine APACHE2>
AcceptPathInfo on
</IfDefine>
### Secondly, you can define the default files in the Moodle
### directories as follows:
DirectoryIndex index.php index.html index.htm
### Thirdly, set up some PHP variables that Moodle needs
php_flag file_uploads 1
php_flag short_open_tag 1
php_flag session.auto_start 0
php_flag session.bug_compat_warn 0
### Fourthly, sometimes Apache limits the size of uploaded files
### (this is a separate limit to the one in PHP, see below).
### The setting here turns off this limitation
LimitRequestBody 0
### These are optional - you may not want to override php.ini
### To enable them, remove the leading hash (#)
#php_value upload_max_filesize 2M
#php_value post_max_size 2M
#php_value session.gc_maxlifetime 7200
### You can change the following line to point to the
### error/index.php file in your Moodle distribution.
### It provides a form which emails you (the admin)
### about 404 errors (URL not found).
#ErrorDocument 404 http://example.org/moodle/error/index.php
### People have reported that these can help in some cases
### (unusual) when you see errors about undefined functions
#php_value auto_prepend_file none
#php_value include_path .
Try this one
Options -MultiViews +FollowSymLinks
RewriteEngine On
RewriteCond %{THE_REQUEST} ^.*\/index\.php?
RewriteCond %{THE_REQUEST} ^.*\/?
RewriteRule ^(.*)index\.php?$ http://www.example.com/moodle$1 [R=301,L]
You can use this rule in site root .htaccess:
RewriteEngine on
RewriteRule ^((?!moodle/).*)$ moodle/$1 [NC,L]

I am facing error 404 in OpenCart when I save changes in Admin

I am facing strange problem this is my Open cart theme. When I try to save any changes in my admin panel it redirects me to 404 page. Is it any issues in my .htaccess I mentioned it below I am facing strange problem this is my Open cart theme.
When I try to save any changes in my admin panel it redirects me to 404 page. Is it any issues in my .htaccess I mentioned it below
# 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]
RewriteRule ^download/(.*) /index.php?route=error/not_found [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
# 7. disable open_basedir limitations
# php_admin_value open_basedir none
check the admin folder permissions
check that 'config.php' in the admin folder is setup correctly (data base name, user, password...)

OpenCart- File not found (404 error) on category pages

I have Opencart Version 1.5.6.4_rc, clean install.
I have created several product categories(with SEO friendly URLs), however, on clicking on category link it always shows the error - File not found(404 error).
I have checked there are no spaces between URL characters. The error is specific to category pages, information pages are fine.
My Htaccess looks like this.
# 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>
#Fix Rewrite
Options -Multiviews
# 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]
RewriteRule ^download/(.*) #/index.php?route=error/not_found [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 36000
# 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 36000
# 7. disable open_basedir limitations
#php_admin_value open_basedir none

Internal Server Error when installing opencart

I'm new to open cart , I jsut uploaded the files to the server and trying to install it but invaine , it gives me 500 internal server error , and it seems to be from the .htacess file
it had been .htacess.txt , I renamed to .htacess and removed the comments from the commands it 's said to remove to git rid of this error but it still the same !
how to fix this ?
and here is the online files http://idev-inc.com/projects/idev_market.com/
# 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
</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]
RewriteRule ^download/(.*) /index.php?route=error/not_found [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
# 7. disable open_basedir limitations
php_admin_value open_basedir none
On certain web hosting servers many of the Apache's settings are not editable with .htaccess files. In such cases the settings in Your .htaccess interfering with this prohibition will cause a 500 internal server error.
On my hosting I had to comment out (remove) everything except RewriteEngine settings and Options +FollowSymlinks. Each other setting (even Options -Indexes) was causing me 500 error.
There should be some administrator's manual provided by Your web hosting provider (try to search their knowledge base or ask them directly) about which settings are allowed in .htaccess files.
By removing the php.ini file , it may conflict the server config , remove it and it will be intialized auto again !

Opencart enabling SEO url leads to 404 error

I'm using opencart version 1.5.5.1 for our website.
When I enable seo in admin section the urls lead to 404.
My site url is https://www.domain.com/dev/.
The .htaccess file content is as follows:
# 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 /dev/
RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteRule ^download/(.*) /index.php?route=error/not_found [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]
#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
# 7. disable open_basedir limitations
# php_admin_value open_basedir none
I know this topic is already posted but the solutions provided didn't work for me.
Please help me. Thanks in advance!
Check this list for search some errors:
Renamed .htaccess.txt -> .htaccess
Enabled Mod_Rewrite on Apache2:a2enmod rewrite then service apache2 restart
Changed the apache2.conf file, located at /etc/apache2/ :
Where is
<Directory /var/www/your-store>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
You Change to
<Directory /var/www/your-store>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
First I don't think rewrite mod is enabled by default. enable it according to distro. for ubuntu - sudo a2enmod rewrite
Try to change AllowOverride none to AllowOverride All in /etc/apache2/sites-enabled/yousiteFile
Ubuntu and some distros work differently. second the default vhost has override set to none so that the htaccess is not allowed to rewrite anything.
restart apache.
Yes, AllowOverride All makes the SEO URL works for me.
As mentioned above, make sure to
sudo a2enmod rewrite
to enable rewrite on Apache.
Then make sure the RewriteEngine On is added to the domains in /etc/apache2/sites-available/
I have a solution for http 404 error. Even I faced a difficulties in starting but now it is very easy to solve it.
Login Opencart Admin .. then edit setting ..then in server section disable use SEO url. Then you will not get any error. Bye
Or if you don't want to disable url then follow below method.
Just edit .htaccess.txt to .htaccess.
You will get this file in root folder.

Categories