.htaccess 500 内部服务器错误,错误标志

.htaccess 500 内部服务器错误,错误标志

我想将以下内容添加到我的 Magento .htaccess 文件中:

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

但结果是 500 内部服务器错误。

日志检查结果如下:

RewriteCond:坏标志分隔符

有没有办法重写它或者以某种方式排除故障?

编辑:我当前的 htaccess 文件:

    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

答案1

问题在于:

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

空格分隔意味着仅^[A-Z]{3,9}被视为正则表达式的一部分(其余部分被视为标志 - 正如您所发现的,它不能很好地工作)。

您需要将其括在引号中:

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

或者更好的是,只需使用具有不太挑剔的匹配字符串的等效项。

RewriteCond %{REQUEST_URI} ^/index\.php$

相关内容