【问题标题】:mod_rewrite fail: .htaccess or server config issue?mod_rewrite 失败:.htaccess 或服务器配置问题?
【发布时间】:2010-11-18 19:33:39
【问题描述】:

我正在开发的应用程序使用特定的文件目录结构。通过使用 mod_rewrite 和 .htaccess 文件,我设法为我们的用户提供友好的 url。它在我的本地服务器上运行良好,但是一旦在生产服务器上,它就会失败:显然,服务器在 .htaccess 有机会启动之前抛出 404 错误。

这是我正在处理的 .htaccess(以下称为 (1)):

IndexIgnore *
#Options +FollowSymLinks
RewriteEngine on

RewriteOptions inherit

RewriteCond %{REQUEST_FILENAME} !-f [NC]
RewriteRule ^(.*)$ /~extranet/extranet/$1 [NC,L,QSA]

在服务器上,它返回 404:

服务器找不到请求的 页面:

<IP-ADDRESS>/~extranet/extranet/dev/foo/

(端口 80)

事实上,似乎任何重定向都失败了,尽管 phpinfo() 在加载的模块中列出了 mod_rewrite。

服务器是全新的。 (如果有帮助,404 页面列出了 Apache/2.0.63 (Unix) mod_ssl/2.0.63 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 PHP/5.2.8 Server)

我应该在哪里查找错误/错误配置?

更新:更多信息

这是文件/文件夹结构和使用的每个 .htaccess:

<IP-ADDRESS>/~extranet/.htaccess (1)
<IP-ADDRESS>/~extranet/extranet/
                              L .htaccess (2)
                              L/dev/
                                   L .htaccess (3)
                                   L index.php
                              L/stable/
                                   L .htaccess (3)
                                   L index.php

(1) 将所有请求重定向到文件夹“extranet” (2) 将所有不包含“/dev/”的请求重定向到文件夹“stable” (3) 将 /extranet/foo/bar/ 改写为 index.php?app=foo&do=bar

【问题讨论】:

    标签: apache .htaccess mod-rewrite friendly-url


    【解决方案1】:

    这里有个波浪号:&lt;IP-ADDRESS&gt;/~extranet/extranet/dev/foo/

    您指定的正则表达式与波浪号不匹配。

    也许您需要为您的远程网络服务器正确指定 RewriteBase?

    【讨论】:

    • 好的,我会尝试使用带波浪号的部分。你能详细说明我应该如何修改 RewriteBase 吗?我真的不明白那个指令。谢谢!!
    • 嗯,主要问题是,a) 你的 .htaccess 在哪里进行重定向,相对于 webroot,b) 你的目标 index.php 文件在哪里?
    • 嗨,戴夫,我已用所需信息更新了问题。感谢您的坚持!
    • 您在回答中提到的 404 错误 - 当您收到该错误时,您在地址栏中输入了什么 URL?
    • 您的 .htaccess 位于 /~extranet/ 内,因此它甚至找不到 .htaccess 来尝试重定向 - 您想访问 http://
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-06
    • 2010-10-19
    • 1970-01-01
    相关资源
    最近更新 更多