为什么将这一行添加到我的 mod_rewrite 会产生循环问题,以及如何避免它?

为什么将这一行添加到我的 mod_rewrite 会产生循环问题,以及如何避免它?

我将其粘贴到我的 Magento 网站的 .htaccess 中现有的 mod_rewrite 部分下方。

我需要对其进行修改以实现一个短网址方案,该方案会将所有请求mysite.com/-jk7ASD63(如所有以破折号开头的短网址)重定向为mysite.com/cartroute/cartlink?shortcode=jk7ASD63(删除破折号的长网址)。

我相信这是要添加的正确行(我在这里测试过https://htaccess.madewithlove.com/):

RewriteRule ^-([a-zA-Z0-9]+)$ cartroute/cartlink?shortcode=$1 [L]

我尝试在 mod_rewrite 部分内的各个位置添加此行,但每次都会产生我无法理解的循环问题...当然,一旦创建了完整的路由,它会再次经过 mod_rewrite,但为什么它不重定向到正确的链接?

.htaccess 的当前 mod_rewrite 部分:

<IfModule mod_rewrite.c>

    Options +FollowSymLinks
    RewriteEngine on

    RewriteRule ^api/rest api.php?type=rest [QSA,L]

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

    RewriteCond %{REQUEST_METHOD} ^TRAC[EK]
    RewriteRule .* - [L,R=405]

    <IfModule mod_setenvif.c>
        <IfModule mod_headers.c>
            Header set X-Content-Type-Options: nosniff
            BrowserMatch \bMSIE\s8 ie8
            Header set X-XSS-Protection: "1; mode=block" env=!ie8
        </IfModule>
    </IfModule>

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

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteCond %{REQUEST_URI} !^/index.php/

    RewriteRule .* index.php [L]

</IfModule>

相关内容