【问题标题】:Rewriterule on .htaccess leads to 404.htaccess 上的重写导致 404
【发布时间】:2012-12-10 17:44:17
【问题描述】:

我正在使用 PHP 5 开发一个托管在 apache 服务器上的应用程序。

域上已经有一个网站在运行:www.domain.com。我的应用程序位于名为“hotsite”的文件夹中,可以通过 URL www.domain.com/hotsite/ 访问它。

根文件夹包含一个 .htaccess,其中包含:

/.htaccess:

XBitHack      Off
RewriteEngine On
RewriteCond   %{REQUEST_URI} \/([0-9a-z]{6})$ [NC]
RewriteRule   ^(.*) http://www.domain.com/url/forward.php?%1 [L]
IndexIgnore .htaccess */.??* *~ *# */HEADER* */README* */_vti*
<Limit GET POST>
order deny,allow
deny from all
allow from all
</Limit>
<Limit PUT DELETE>
order deny,allow
deny from all
</Limit>
AuthName www.domain.com
AuthUserFile /home/intera/public_html/_vti_pvt/service.pwd
AuthGroupFile /home/intera/public_html/_vti_pvt/service.grp
RedirectMatch permanent ^/webmail$ http://http://mail.google.com/hosted/domain.com www.domain.com/hotsite/

在这个 'hotsite' 文件夹中,有一个 .htaccess 文件,其中包含以下代码:

/hotsite/.htaccess:

RewriteEngine on
RewriteBase /
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteRule ^(.*)$ /folder/index.php

现在,当我访问 www.domain.com/hotsite/ 时,我的应用程序加载正常。但是当我尝试访问 www.domain.com/hotsite/section/ 时,它似乎忽略了 .htaccess 文件并尝试访问“部分”,就好像它是一个文件夹一样,返回 404 错误。

任何想法为什么会发生这种情况以及我应该怎么做才能使它起作用?

谢谢 =)

【问题讨论】:

  • 将 som 垃圾文本放在您的 .htaccess 顶部,看看它是否会为您生成 500 错误。

标签: .htaccess mod-rewrite


【解决方案1】:

如果 htaccess 在 hotsite 文件夹内,则 RewriteBase / 需要为 RewriteBase /hotsite

以防万一;注意重写规则,重写为/folder/index.php,而不是/hotsite/folder/index.php

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多