【问题标题】:Mod_rewrite has different result on Windows and Ubuntu [closed]Mod_rewrite 在 Windows 和 Ubuntu 上有不同的结果 [关闭]
【发布时间】:2012-09-29 23:29:11
【问题描述】:

我设置了以下重写规则

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ core/index.php [L]

网站架构是

newsite
 ﹂ .htaccess
 ﹂ core
     ﹂ index.php

如果我在 Windows 上使用 url:http://localhost/web/newsite/test
它将重定向到 /web/newsite/core/index.php
它工作!

但如果在 Ubuntu 上使用 URL http://localhost/~user1/web/newsite/test
它将重定向到 /home/user1/public_html/web/newsite/core/index.php
不是 /~user1/web/newsite/core/index.php

那么,我该如何解决这个问题呢?
谢谢!

【问题讨论】:

    标签: windows linux .htaccess mod-rewrite ubuntu


    【解决方案1】:

    在规则上方添加RewriteBase

    RewriteBase /~user1/web/newsite/
    

    ubuntu 上的 Apache 尝试猜测重写规则的目标是 URI 路径还是文件路径,但它猜测不正确,因此您必须告诉它真正的相对 URI 基数是什么。

    【讨论】:

    • 感谢您的回答,但是如果我使用 RewriteBase,我必须在每个服务器中设置不同的 RewriteBase。那么,有没有什么办法可以处处解决问题呢?
    • @AzureChen 它根本不应该重定向,它应该只是为您提供内容。
    猜你喜欢
    • 2015-11-10
    • 2012-12-25
    • 2023-03-15
    • 2011-01-14
    • 1970-01-01
    • 1970-01-01
    • 2018-07-06
    • 1970-01-01
    • 2019-06-03
    相关资源
    最近更新 更多