htaccess Symfony2将所有*.php页面(app.php除外)重定向到app.php

htaccess Symfony2将所有*.php页面(app.php除外)重定向到app.php,php,apache,.htaccess,symfony,redirect,Php,Apache,.htaccess,Symfony,Redirect,我想将我的htaccess修改为: 将所有*.php调用重定向到app.php(SEO调用以保持迁移排名) 避免将app.php排除在上述重写规则之外的重定向循环 我的结局是: <IfModule mod_rewrite.c> RewriteEngine On RewriteCond %{REQUEST_URI} !app\.php$ RewriteRule ^(.*)\.php?$ /app.php/ [R=301,L] [...] </I

我想将我的htaccess修改为:

  • 将所有*.php调用重定向到app.php(SEO调用以保持迁移排名)
  • 避免将app.php排除在上述重写规则之外的重定向循环
  • 我的结局是:

    <IfModule mod_rewrite.c>
        RewriteEngine On
    
        RewriteCond %{REQUEST_URI} !app\.php$
        RewriteRule ^(.*)\.php?$ /app.php/ [R=301,L]
    
       [...]
    
    </IfModule>
    
    
    重新启动发动机
    重写cond%{REQUEST_URI}!app\.php$
    重写规则^(.*)\.php?$/app.php/[R=301,L]
    [...]
    
    但这会在测试url上生成一个404,如

    这里怎么了


    关于,

    您应该在
    app.php
    之后使用此规则,且不带斜杠:

    RewriteEngine On
    
    RewriteCond %{REQUEST_URI} !^/app\.php$ [NC]
    RewriteRule ^(.+)\.php$ /app.php [R=301,L,NC,NE]
    

    在测试此更改之前,请确保清除浏览器缓存。

    请检查此项。确保清除缓存

    DirectoryIndex app.php
    
    <IfModule mod_rewrite.c>
        RewriteEngine On
    
        RewriteCond %{REQUEST_URI}::$1 ^(/.+)/(.*)::\2$
        RewriteRule ^(.*) - [E=BASE:%1]
    
        RewriteEngine On
        RewriteCond %{HTTP:Authorization} ^(.*)
        RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
        RewriteCond %{ENV:REDIRECT_STATUS} ^$
        RewriteRule ^app\.php(/(.*)|$) %{ENV:BASE}/$2 [R=301,L]
    
        RewriteCond %{REQUEST_FILENAME} -f
        RewriteRule .? - [L]
    
        RewriteRule .? %{ENV:BASE}/app.php [L]
    </IfModule>
    
    <IfModule !mod_rewrite.c>
        <IfModule mod_alias.c>
            # When mod_rewrite is not available, we instruct a temporary redirect of
            # the start page to the front controller explicitly so that the website
            # and the generated links can still be used.
            RedirectMatch 302 ^/$ /app.php/
            # RedirectTemp cannot be used instead
        </IfModule>
    </IfModule>
    
    DirectoryIndex app.php
    重新启动发动机
    RewriteCond%{REQUEST_URI}:$1^(/.+)/(.*):\2$
    重写规则^(.*)-[E=基:%1]
    重新启动发动机
    RewriteCond%{HTTP:Authorization}^(.*)
    重写规则。*-[e=HTTP\U授权:%1]
    RewriteCond%{ENV:REDIRECT_STATUS}^$
    重写规则^app\.php(/(.*)|$)%{ENV:BASE}/$2[R=301,L]
    RewriteCond%{REQUEST_FILENAME}-f
    重写规则[L]
    重写规则.?%{ENV:BASE}/app.php[L]
    #当mod_rewrite不可用时,我们指示临时重定向
    #将起始页显式地发送到前端控制器,以便网站
    #生成的链接仍然可以使用。
    重定向匹配302^/$/app.php/
    #不能改为使用RedirectTemp
    
    谢谢,这也很有效,但对我的需求来说有点过头了+1用于mod_重写禁用的处理