How to remove index.php from URLs?

后端 未结 8 949
我寻月下人不归
我寻月下人不归 2020-11-27 12:02

All of my URLs on my Magento installation require index.php in them, like:

http://example.com/index.php/admin/
http://example.com/index.php/customer/account/         


        
相关标签:
8条回答
  • 2020-11-27 12:44

    Mainly If you are using Linux Based system Like 'Ubuntu' and this is only suggested for localhost user not for the server.

    Follow all the steps mentioned in the previous answers. +

    Check in Apache configuration for it. (AllowOverride All) If AllowOverride value is none then change it to All and restart apache again.

    <Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>
    

    Let me know if this step help anyone. As it can save you time if you find it earlier.

    I am adding the exact lines from my htaccess file in localhost. for your reference

    Around line number 110

    <IfModule mod_rewrite.c>
    
    ############################################
    ## enable rewrites
    
    Options +FollowSymLinks
    RewriteEngine on
    
    ############################################
    ## you can put here your magento root folder
    ## path relative to web root
    
    #RewriteBase /
    
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    

    Images are for some user who understand easily from image the from the text:

    0 讨论(0)
  • 2020-11-27 12:45

    How about this in your .htaccess:

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
    
    0 讨论(0)
  • 2020-11-27 12:47

    This may be old, but I may as well write what I've learned down. So anyway I did it this way.

    ---------->

    Before you start, make sure the Apache rewrites module is enabled and then follow the steps below.

    1) Log-in to your Magento administration area then go to System > Configuration > Web.

    2) Navigate to the Unsecure and Secure tabs. Make sure the Unsecured and Secure - Base Url options have your domain name within it, and do not leave the forward slash off at the end of the URL. Example: http://www.yourdomain.co.uk/

    3) While still on the Web page, navigate to Search Engine Optimisation tab and select YES underneath the Use Web Server Rewrites option.

    4) Navigate to the Secure tab again (if not already on it) and select Yes on the Use Secure URLs in Front-End option.

    5) Now go to the root of your Magento website folder and use this code for your .htaccess:

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    </IfModule>
    

    Save the .htaccess and replace the original file. (PLEASE MAKE SURE TO BACKUP YOUR ORIGINAL .htaccess FILE BEFORE MESSING WITH IT!!!)

    6) Now go to System > Cache Management and select all fields and make sure the Actions dropdown is set on Refresh, then submit. (This will of-course refresh the Cache.)

    ---------->

    If this did not work please follow these extra steps.

    7) Go to System > Configuration > web again. This time look for the Current Configuration Scope and select your website from the dropdown menu. (This is of course, it is set to Default Config)

    8) Make sure the Unsecure and Secure fields contain the same domain as the previous Default Config file.

    9) Navigate to the Search Engines Optimisation tab and select Yes underneath the Use Web Server Rewrites section.

    10) Once the URLs are the same, and the rewrite is enabled save that page, then go back and make sure they are all checked as default, then save again if needed.

    11) Repeat step 6.

    Now your index.php problem should be fixed and all should be well!!!

    I hope this helps, and good luck.

    0 讨论(0)
  • 2020-11-27 12:47

    If the other solutions don't work for you, try this:

    Step 1: (if your installation is in webroot)

    Replace

        #RewriteBase /magento/
    

    with

        RewriteBase /
    

    Step 2:

    Add following lines (inclusive exclude admin because backend needs index.php internally)

    RewriteCond %{THE_REQUEST} ^.*/index.php
    RewriteRule ^(.*)index.php$ http://www.yourdomain.com/$1 [R=301,L]
    RewriteRule ^index.php/(admin|user)($|/) - [L]
    RewriteRule ^index.php/(.*) $1 [R=301,QSA,L]
    

    right after

    RewriteRule .* index.php [L] 
    

    This works for me

    In case it is still not working, double check Magento configuration: System->Configuration->Web->Search Engine Optimization. Rewrites must be enabled.

    0 讨论(0)
  • 2020-11-27 12:50

    Hi I'm late to the party.. just wanted to point out that the instructions from http://davidtsadler.com/archives/2012/06/03/how-to-install-magento-on-ubuntu/ were really useful.

    I had Ubuntu server installed with Apache, MySql and Php so I thought I could jump to the heading Creating the directory from which Magento will be served from and I reached the same problem as the OP, i.e. I had 'index.php' needed in all the URLs (or I would get 404 not found). I then went back to Installing and configuring the Apache HTTP server and after restarting apache it works perfectly.

    For reference, I was missing:

    sudo bash -c "cat >> /etc/apache2/conf.d/servername.conf <<EOF
    ServerName localhost
    EOF"
    

    ... and

    sudo a2enmod rewrite
    sudo service apache2 restart
    

    Hope this helps

    0 讨论(0)
  • 2020-11-27 12:57

    You have to enable mod_rewrite in apache to make clean urls to work

    if mod_rewrite is not in phpinfo you have to install it by

    sudo a2enmod rewrite
    sudo apache2ctl -l
    

    You need to replace the occurrence of AllowOverride none to AllowOverride all ( in /etc/apache2/sites-enabled/000-default)

    Restart Apache

    sudo service apache2 restart
    

    In Magento’s admin go to System > Configuration > Web > search engine Optimization and change “Use Web Server Rewrites” to Yes

    0 讨论(0)
提交回复
热议问题