【问题标题】:htaccess single page entry not serving static fileshtaccess 单页条目不提供静态文件
【发布时间】:2020-11-01 00:55:02
【问题描述】:

我正在 PHP 中创建一个单页入口点。路由工作正常,但 Js & CSS 等静态文件返回 404。我不知道这是否与 htaccess 重定向有关。

这是 htaccess 文件的代码:

RewriteEngine on
RewriteCond ${REQUEST_URI} !\.(?:css|png|js|jpe?g|gif)$ [NC]
RewriteRule ^([a-zA-Z0-9\-\_\/]*)$ index.php?p=$1
RewriteCond ${REQUEST_FILENAME} !-f
RewriteCond ${REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?p=$1 [L,QSA]

【问题讨论】:

    标签: php apache .htaccess


    【解决方案1】:

    尝试不使用第一个 RewriteRule:

    RewriteEngine on
    RewriteCond ${REQUEST_URI} !\.(?:css|png|js|jpe?g|gif)$ [NC]
    RewriteCond ${REQUEST_FILENAME} !-f
    RewriteCond ${REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?p=$1 [L,QSA]
    

    【讨论】:

    • ++ btw 很长一段时间后才看到你的帖子 :)
    【解决方案2】:

    这会检查请求是针对文件还是目录,如果不是,它将路由到 index.php 中

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?p=$1 [L,QSA]
    

    【讨论】:

    • 这行得通,但做了一些小的改动:RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^.*$ ./index.php [NC,L, QSA]
    【解决方案3】:

    您可以设置重写规则,以便它们仅适用于某些不存在的文件,而其他文件,您可以重定向到 index.php(或任何所需的页面)。任何其他文件都会根据需要显示...

    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php [QSA,NC,L]
    

    然后您可以使用require() 来请求可能已请求的任何类型的文件,无论是 index.php 还是 someOtherScript.php。

    【讨论】:

      猜你喜欢
      • 2012-12-14
      • 2012-06-15
      • 2014-02-11
      • 2018-10-23
      • 2021-07-08
      • 2013-06-02
      • 2012-12-06
      • 1970-01-01
      相关资源
      最近更新 更多