mod_rewrite失败:.htaccess或服务器配置问题?

时间:2009-08-12 00:00:53

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

我正在开发的应用程序使用某种文件目录结构。通过使用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&amp; do = bar

1 个答案:

答案 0 :(得分:1)

这里有一个代字号:<IP-ADDRESS>/~extranet/extranet/dev/foo/

指定的正则表达式与代字号不匹配。

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