【问题标题】:url rewrite htaccess godaddy or 000webhosturl 重写 htaccess godaddy 或 000webhost
【发布时间】:2017-06-27 07:25:57
【问题描述】:

当我在本地进行 URL 重写时,它工作正常,但当我上传它时,我在 GoDaddy 和 000webhost 中尝试过,但他们都说 404 no found。

我有一个域 (GoDaddy) 和一个子文件夹(与主域完全无关)。所以我只在子域中工作

http://maindomain.com/sub/

管理员模式在这个网址中

http://maindomain.com/sub/admin/

并且调用的控制器和动作是基于admin后的值

http://maindomain.com/sub/admin/controller/action/

这是我的 .htaccess 文件(本地)

Options +FollowSymLinks
Options -Indexes

RewriteEngine On
RewriteBase /reoc/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^admin/(.+)$ admin/index.php?URI=$1 [QSA,L]

我做了很多在互联网上找到的调整,但我放弃了

DirectoryIndex index.php
Options +FollowSymLinks

RewriteEngine On

RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^/reoc/admin/(.*)$ %{HTTP_HOST}/reoc/admin/index.php?URI=$1 [QSA,L]

htaccess 文件位于子文件夹的根目录。

maindomain.com
|
`-sub
| |
| `admin
| | |
| | ...
| | `index.php
| |
| `.htaccess
...

【问题讨论】:

  • 试试 ^sub/admin....
  • 试了很多次还是找不到404 :///
  • 当最后一行不是“^/reoc”而是“^reoc”时会发生什么
  • admin/index 也很可疑.. 你能打印你的根文件夹树吗?
  • .htaccess 是否被解释过?我通常通过将垃圾放入文件中并检查是否生成错误 500 来检查这一点

标签: php apache .htaccess url-rewriting


【解决方案1】:

经过几个小时的努力,我终于摆脱了这个愚蠢的问题。正如我所怀疑的那样。当我收到错误 500 时,所有 URL 重写都已完美执行。我得到它的原因是 spl_autoload_register 不知何故无法工作。现在一切都很好。

我将发布我最后的 htaccess 给那些挣扎并将挣扎的人:)

Options +FollowSymLinks -Indexes
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_URI} /subfolder/admin/
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d

RewriteRule ^subfolder/admin/(.*)$ /subfolder/admin/index.php?URI=$1 [QSA,L]

感谢IvoP 的所有耐心:)

【讨论】:

    【解决方案2】:

    我会在 /reoc/admin/ 中放置一个文件 test.php

    该文件的内容: <?php echo __FILE__; echo '<br>' . $_SERVER['REQUEST_URI'] ?>

    在 .htaccess 中的重写规则之前放置一个 # 检查您是否可以访问 test.php

    检查 /reoc/admin/users 确实给出错误 404

    然后在 .htaccess RewriteRule reoc/admin/users /reoc/admin/test.php

    确实,我还没有在此处添加通配符。

    如果这有效:请务必在规则前添加 -f en -d Cond 行。

    现在从规则中删除“用户”部分。

    结果如何?

    【讨论】:

    • test.php 确实有效。我早些时候做了一个通配符路线,实际上它确实有效。 Idk 为什么你的重写规则不起作用。这是我的 htaccess 文件 -> Options +FollowSymLinks -MultiViews -Indexes RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule reoc/admin/users /reoc/admin/test.php
    • 这个 .htaccess 文件在哪里?可以放在document_root里吗?因为你说的是​​ subdomein,但据我所知,它只是一些名为 reoc 的地图中的一个页面。
    • 是的,目前它被放置在潜艇上。我害怕将它放在主文件夹中,因为它也可能影响其他子域(这是另一个系统)
    • 我尝试在主文件夹中移动 htaccess 并想出了这个 -> RewriteEngine on RewriteCond %{HTTP_HOST} ^(www.)?kikosbakeshop.com$ RewriteCond %{REQUEST_URI} !^/reoc/admin/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ /reoc/admin/$1 RewriteCond %{HTTP_HOST} ^(www.)?kikosbakeshop.com$ RewriteRule ^(/)?$ reoc/admin/index.php?URI=$1 [L]
    • 如果添加 RewriteRule reoc/admin/users /reoc/admin/test.php [L] 行会怎样
    猜你喜欢
    • 1970-01-01
    • 2013-05-06
    • 2017-10-06
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    • 2011-03-19
    相关资源
    最近更新 更多