【问题标题】:XAMPP Preview of PHP Redirects to Main WebsitePHP 重定向到主网站的 XAMPP 预览
【发布时间】:2024-01-19 19:50:01
【问题描述】:

我最近让第三方承包商编辑了我的网站,因此您不再在每个网址的末尾看到“.php”。我假设他用 .htaccess 改变了一些东西,尽管自从这份工作以来我一直没能得到他的回应。从那时起,如果我想预览我的网站以使用运行“localhost/filename”的 XAMPP 进行编辑,会将我重定向到我的主要在线 url。我可以使用 xampp 设置或 .htaccess 更改任何内容以允许我在上传之前查看小修改的预览吗?我不是 Apache 或 .htaccess 文件方面的专家。 提前谢谢你。

编辑答案: 所以这不是 .htaccess 问题。这比我想象的要复杂一些。我的同事帮助我完成的最简单的解决方案如下-

首先我使用本教程编辑了我的主机文件:https://www.howtogeek.com/howto/27350/beginner-geek-how-to-edit-your-hosts-file/?fbclid=IwAR3d5pnrWgOdutlcrtThAzpIQSTteESgi6p6eWoPLaE_IPN-C1jZegLJBBI

在我刚刚放入的主机文件中

127.0.0.1       yourmodel-local.com.

其次,我打开了 Apache Config 文件“httpd.conf”,在该文件中的“ServerName localhost:80”行下我添加了这个:

    <VirtualHost yourmodel-local.com:80>
DocumentRoot "C:/xampp/htdocs/yourmodel/"
ServerName yourmodel-local.com

现在运行 XAMPP,我可以使用 yourmodel-local.com 作为我的预览网址。

【问题讨论】:

    标签: php apache .htaccess xampp


    【解决方案1】:

    根据您的说法,.htaccess 中可能有 RewriteRuleRedirect 指令。

    通常这些说明用于使用特定域,例如始终使用 https 版本的 www.site.com

    你应该寻找类似于这些的行:

    RewriteCond %{HTTP_HOST} ^example\.com [NC]
    RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301,NC]
    

    如果您可以提供 .htaccess 文件的那部分代码,我或许可以指出您需要修改的内容。

    更新

    在查看您提交的 .htaccess 文件后,问题与从托管公司的服务器自动添加到您的 .htaccess 的行有关。包含.well-known/acme-challenge 等字符串的行用于生成 SSL 证书。

    您的远程 .htaccess 开头有以下三行:

    #RewriteEngine On
    #RewriteCond %{REQUEST_FILENAME} !-f
    #RewriteRule ^([^\.]+)$ $1.php [NC,L]
    

    # 用于注释,表示这些行没有被使用。

    因此,我认为在这种情况下,最简单的解决方案是保留远程 .htaccess 文件,但编辑您在本地拥有的文件以仅包含以下内容:

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([^\.]+)$ $1.php [NC,L]
    

    基本上,您本地的 .htaccess 中只有这个,而远程保持原样,因为它还有一些 PHP 配置行,这可能会在您的本地开发环境中导致 500 错误。确保不包含原始的 # 符号。

    【讨论】:

    • 嗨,米哈伊尔,感谢您的评论。我清楚地看到了你在文件中所说的内容。您可以在此处下载该 .htaccess 文件:dropbox.com/s/pbki930g5m55l3f/.htaccess?dl=0 在某些情况下,我会看到“rewriteCond”,尽管我没有看到您所写的对直接 url 的任何引用。
    • 感谢您的浏览。我确实按照您的建议进行了更改,但我仍然被重定向到我的在线网址。我想我将问题隔离到第 12 行: RewriteRule ^(.*)$ yourmodel.space/$1 [R,L] 仅删除此行会将我发送到我的本地服务器,但我的其余部分不再有任何 javascript 或样式地点。你认为这可能是问题吗?如果是,我应该如何编辑它?非常感谢!
    • 你只留下我告诉你的吗?从字面上删除本地 htaccess 文件中的所有其他内容。然后以防万一删除您的浏览器历史记录或以隐身模式打开。
    • 我实际上尝试了几个选项。正如您所建议的,当我仅使用前几行而没有我的 .htaccess 的前几行加载我的网站时,该网站在本地加载但没有任何样式或 javascript,即使在清除我的浏览历史记录后也是如此。然后我试图找出控制这个问题的线路。我还应该查看其他任何方面来解决此问题吗?
    最近更新 更多