【问题标题】:htaccess - Redirect EVERYTHING through php filehtaccess - 通过 php 文件重定向一切
【发布时间】:2014-11-24 18:45:07
【问题描述】:
RewriteEngine on
RewriteCond %{REQUEST_URI} !(\.|/$)
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ api.php?url=$1 [L]

上面显示了我当前的配置。

这样做的问题是,如果目录或文件存在于 htaccess 文件所在的文件夹之后,它似乎只会重定向。

我该如何重写它,以便它实际上只是将每个请求重定向到 api.php 并使用完整的请求路径?我不想查看 htaccess 文件中是否存在目录或文件,我可以在 api.php 中执行此操作,我只想通过该文件推送所有请求。

【问题讨论】:

    标签: php apache .htaccess mod-rewrite redirect


    【解决方案1】:

    你可以使用:

    RewriteEngine on
    
    RewriteCond %{REQUEST_URI} !(\.|/$)
    RewriteRule (.*) %{REQUEST_URI}/ [R=301,L]
    
    RewriteRule ^((?!api\.php$).*)$ api.php?url=$1 [L,QSA,NC]
    

    Lookahead (?!api\.php$) 表示使用查询参数 url 将除 /api.php 之外的所有内容重写为 /api.php。

    【讨论】:

      【解决方案2】:

      像这样:

      RewriteEngine on
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^([^?]*)$ /api.php?path=$1 [NC,L,QSA]
      

      确保你在路线之前有这个

      RewriteEngine on
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-10-12
        相关资源
        最近更新 更多