【问题标题】:mod_rewrite -> doesn't work as expectedmod_rewrite -> 没有按预期工作
【发布时间】:2012-10-09 07:31:23
【问题描述】:

我使用以下 .htaccess 将所有请求重定向到我的 index.php,除非存在文件夹或文件。

RewriteEngine On

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

RewriteRule ^(.*)$ index.php?uri=$1 [QSA]

但如果我尝试像 domain.com/thing/a/thing/b 这样的 url,我会被重定向到我的 index.php,但其他一切都搞砸了。 html 没有正确链接到样式表等等。

我的应用程序有点像 MVC 框架,即一切都发生在 index.php 上。所以我不希望其他文件可以访问,除了公共文件夹中的文件和一些特定文件。即根目录下的 cron.php 和文件夹结构下的一些 css/js/image 文件。

有关文件结构的更多详细信息:https://bitbucket.org/BrainInBlack/source-motd-plus/src

或者我是否必须用绝对路径链接样式表和其他东西,即 "http://domain.com/path/to/style.css" 等等?

【问题讨论】:

    标签: apache mod-rewrite


    【解决方案1】:

    (.*)$ index.php?uri=$1之前使用斜线客户端。

    使用此代码:

    RewriteRule ^/client(.*)$ index.php?uri=$1
    

    【讨论】:

    • 通过RewriteRule 传递的 URI 在 htaccess 文件中的前导斜杠被剥离(从 v2 开始),这永远不会匹配 htaccess 文件中的任何内容。
    【解决方案2】:

    您要么需要将所有链接更改为绝对链接,要么添加一个

    <base href="http://domain.com/">
    

    到您页面的标题。

    【讨论】:

      猜你喜欢
      • 2011-12-31
      • 1970-01-01
      • 2016-03-31
      • 2019-03-15
      • 2021-10-19
      • 2020-03-18
      • 2012-06-14
      • 2014-11-15
      • 1970-01-01
      相关资源
      最近更新 更多