0

今天下午的大部分时间我都在试图弄清楚为什么我的 .htaccess 文件没有按预期工作。基本上我想做的是添加 url 重写以将旧 url 映射到新 url。因此,我创建了所有重写并将它们粘贴到 .htaccess 文件中,它们在模式匹配和服务器重定向的意义上起作用,但它总是被重定向到目录路径,因为domain.com/var/www/docroot/.../tools.html我认为这可能是由于RewriteBase被注释掉并且根文档没有在其他地方正确设置,我无权访问主要配置文件,因为这是一个共享服务器。所以我取消了注释RewriteBase /并且重定向按预期工作。问题是当我尝试导航到站点地图时出现 404 错误,站点地图肯定存在。从那以后我尝试了各种各样的事情,我想我已经把问题缩小到了

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

在在线阅读各种内容并尝试理解 apache 文档时,我遇到了一些说重写条件仅适用于紧随其后的规则的内容。所以我尝试在 index.php 引导部分之前再次添加上述重写条件,这样做可以让我得到我的站点地图,但是当我尝试加载主页时,如果我注释掉RewriteBase /我的,我会得到一个默认的 Plesk 控制面板页面主页加载,但站点地图 url 尝试加载 domain.com/var/www/.../sitemap.xml。我很困惑,现在我的头很痛,我整个下午都在努力寻找答案......我会很感激任何建议。

这是文件:

    ############################################
    ## 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

    ############################################
    ## GoDaddy specific options

    #   Options -MultiViews

    ## you might also need to add this line to php.ini
    ##     cgi.fix_pathinfo = 1
    ## if it still doesn't work, rename php.ini to php5.ini

    ############################################
    ## this line is specific for 1and1 hosting

        #AddType x-mapp-php5 .php
        #AddHandler x-mapp-php5 .php

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

        DirectoryIndex index.html index.php

    <IfModule mod_php5.c>

    ############################################
    ## adjust memory limit

    #    php_value memory_limit 64M
        php_value memory_limit 256M
        php_value max_execution_time 18000

    ############################################
    ## 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

        # 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


    ############################################
    ## old url rewrites

        RewriteRule .*_57581_pd\.asp tools.html [R=302,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

        ExpiresDefault "access plus 1 year"

    </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

在完整的文件中有很多这些类型的重写RewriteRule .*_57581_pd\.asp tools.html [R=302,L],但是这里粘贴的太多了,所以我删除了除了 1 之外的所有内容以供参考。

4

1 回答 1

0

您是否尝试过将此规则更改为:

RewriteRule .*_57581_pd\.asp http://%{HTTP_HOST}/tools.html [R=302,L]
于 2013-10-04T17:37:16.640 回答