2009-08-12 55 views
0

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

这是我工作的.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服务器)

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

UPDATE:详细信息

这里是文件/文件夹结构和使用的每个的.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)重定向的所有请求文件夹 “外部网” (2)重定向的所有请求不包含 “的/ dev /” 文件夹 “稳定” (3)重写/外网/富/酒吧/的index.php应用= foo的&做=酒吧

回答

1

有一个在这里波浪:<IP-ADDRESS>/~extranet/extranet/dev/foo/

指定的正则表达式不符合代字号。

也许你需要为远程web服务器正确指定你的RewriteBase?

+0

好的,我会尝试使用带有代字号的部分。 你能否详细说明我应该如何修改RewriteBase?我不太明白这个指令。谢谢!! – pixeline 2009-08-12 00:57:40

+0

那么主要的问题是,a)你的.htaccess正在做重定向,相对于webroot,以及b)你的目标index.php文件在哪里? – Amber 2009-08-12 04:22:02

+0

嗨Dav,我用所需的信息更新了问题。感谢您坚持! – pixeline 2009-08-13 12:20:09