Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

I'd like to add the following to my Magento .htaccess file:

RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP/
RewriteRule ^index.php$ http://www.mystore.com/ [R=301,L]

However it turns out as a 500 internal server error.

A log examination results in:

RewriteCond: bad flag delimiters

Is there a way to have this rewritten or to troubleshoot somehow?

EDIT: My current htaccess file:

    Options -Indexes

    ############################################
    ## uncomment these lines for CGI mode
    ## make sure to specify the correct cgi php binary file name
    ## it might be /cgi-bin/php-cgi

    #    Action php5-cgi /cgi-bin/php5-cgi
    #    AddHandler php5-cgi .php

    ############################################
    ## default index file

        DirectoryIndex index.php

    <IfModule mod_php5.c>

    ############################################
    ## disable magic quotes for php request vars

        php_flag magic_quotes_gpc off

    ############################################
    ## disable automatic session start
    ## before autoload was initialized

        php_flag session.auto_start off

    ############################################
    ## enable resulting html compression

        php_flag zlib.output_compression on

    ###########################################
    # disable user agent verification to not break multiple image upload

        php_flag suhosin.session.cryptua off

    ###########################################
    # turn off compatibility with PHP4 when dealing with objects

        php_flag zend.ze1_compatibility_mode Off

    </IfModule>

    <IfModule mod_security.c>
    ###########################################
    # disable POST processing to not break multiple image upload

        SecFilterEngine Off
        SecFilterScanPOST Off
    </IfModule>

    <IfModule mod_deflate.c>

    ############################################
    ## enable apache served files compression
    ## http://developer.yahoo.com/performance/rules.html#gzip

        # Insert filter on all content
        SetOutputFilter DEFLATE
        # Insert filter on selected content types only
        AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css text/javascript application/x-javascript

        # Netscape 4.x has some problems...
        BrowserMatch ^Mozilla/4 gzip-only-text/html

        # Netscape 4.06-4.08 have some more problems
        BrowserMatch ^Mozilla/4\.0[678] no-gzip

        # MSIE masquerades as Netscape, but it is fine
        BrowserMatch \bMSIE !no-gzip !gzip-only-text/html

        # Don't compress images
        SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary

        # Make sure proxies don't deliver the wrong content
        Header append Vary User-Agent env=!dont-vary

    </IfModule>


    <IfModule mod_ssl.c>

    ############################################
    ## make HTTPS env vars available for CGI mode

        SSLOptions StdEnvVars

    </IfModule>

    <IfModule mod_rewrite.c>

    ############################################
    ## enable rewrites

        Options +FollowSymLinks
        RewriteEngine on

    ############################################
    ## you can put here your magento root folder
    ## path relative to web root

        RewriteBase /

    ############################################
    ## workaround for HTTP authorization
    ## in CGI environment

        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    ############################################
    ## always send 404 on missing files in these folders

        RewriteCond %{REQUEST_URI} !^/(media|skin|js)/

    ############################################
    ## never rewrite for existing files, directories and links

        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-l

    ############################################
    ## rewrite everything else to index.php

        RewriteRule .* index.php [L]

    </IfModule>


    ############################################
    ## Prevent character encoding issues from server overrides
    ## If you still have problems, use the second line instead

        AddDefaultCharset Off
        #AddDefaultCharset UTF-8

    <IfModule mod_expires.c>

    ############################################
    ## Add default Expires header
    ## http://developer.yahoo.com/performance/rules.html#expires

        ExpiresActive On
        ExpiresByType text/css "access plus 30 days"
        ExpiresByType text/javascript "access plus 7 days"
        ExpiresByType application/x-javascript "access plus 7 days"
        ExpiresByType application/javascript "access plus 7 days"
        ExpiresByType image/x-icon "access plus 7 days"
        ExpiresByType image/png "access plus 3 months"
        ExpiresByType image/gif "access plus 3 months"
        ExpiresByType image/jpeg "access plus 3 months"
        ExpiresByType image/jpg "access plus 3 months"
        ExpiresByType application/x-shockwave-flash "access plus 3 months"

    </IfModule>

    ############################################
    ## By default allow all access

        Order allow,deny
        Allow from all

    ###########################################
    ## Deny access to release notes to prevent disclosure of the installed Magento version

        <Files RELEASE_NOTES.txt>
            order allow,deny
            deny from all
        </Files>

    ############################################
    ## If running in cluster environment, uncomment this
    ## http://developer.yahoo.com/performance/rules.html#etags

        #FileETag none
share|improve this question
add comment

1 Answer

up vote 2 down vote accepted

The problem is here:

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP/

The space separation means that only ^[A-Z]{3,9} is considered part of the regex (and the rest is treated as a flag - which doesn't work well, as you've found).

You'd need to wrap it in quotes:

RewriteCond %{THE_REQUEST} "^[A-Z]{3,9} /index\.php HTTP/"

Or better yet, just use an equivalent with a less finicky match string.

RewriteCond %{REQUEST_URI} ^/index\.php$
share|improve this answer
    
WOW - thank you Mr. Madden , you are a true expert! I have posted this in several forums and nobody was able to get this going. Thanks again, your solution works perfectly well. –  TheDave Sep 6 '12 at 4:46
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.