【问题标题】:Redirecting all links to directory将所有链接重定向到目录
【发布时间】:2022-01-24 19:52:42
【问题描述】:

我将所有链接重定向到“公共”目录宽度:

RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /public/$1 [L,QSA,NC]

但它总是给我“500 内部服务器错误”

如果我写了一致的路径,它会工作

RewriteEngine on
RewriteBase /

RewriteRule ^(.*)$ /public/page/

但是如果我把动态变量 $i 它给我 500 错误

【问题讨论】:

    标签: apache .htaccess redirect mod-rewrite server


    【解决方案1】:
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /public/$1 [L,QSA,NC]
    

    这将导致重写循环(500 错误),除非它重写到物理文件。您需要确保只重写直接请求。您可以通过检查 REDIRECT_STATUS env var 来做到这一点。

    例如:

    RewriteCond %{ENV:REDIRECT_STATUS} ^$
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule (.*) public/$1 [L]
    

    这里不需要QSANC 标志。

    或者,在 Apache 2.4 上使用 END 标志:

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule (.*) public/$1 [END]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-07
      • 1970-01-01
      • 2014-07-03
      • 1970-01-01
      • 2014-02-21
      • 2015-05-22
      • 2014-05-21
      相关资源
      最近更新 更多