0

我的用户目录下有一个 php/apache 网站,比如说http://localhost/~johnny5/

我有一个/en包含.htaccess文件和文件的index.php文件夹:

/home/johnny5/public_html
                         /somefile.php
                         /someotherfile.php
                         /en/
                            .htacces
                            index.php

我启用了 url 重写,/en因此所有请求都由 index.php 处理。这是 .htacces 的内容:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /~johnny5/en
RewriteRule . index.php

到这里为止,一切正常。

当我点击 时,http://localhost/~johnny5/en/foo/bar请求由 处理/en/index.php

现在,出于测试目的,我将网站移到下面,/var/www这样我就可以直接通过http://localhost/. 我调整.htaccess文件以删除用户文件夹:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /en
RewriteRule . index.php

我现在有这个结构:

/var/www
        /somefile.php
        /someotherfile.php
        /en/
            .htacces
            index.php

现在,如果我点击http://localhost/en/foo/bar,我希望请求由 处理/en/index.php,但我得到的只是 404 not found for /en/foo/bar

看起来重写模块在我的用户目录下工作,但不在“主”目录下。

我错过了什么?

4

2 回答 2

1

不确定服务器上的新结构,但请记住一个非常重要的规则:.htaccess 规则仅适用于 CURRENT 和 CHILD(递归)目录,不适用于高于 .htaccess 目录的目录。

因此,如果您的 .htaccess 现在位于:

/home/johnny5/public_html/en/.htaccess

它不能与路径一起使用

http://localhost/en/foo/bar

如果服务器上的http://localhost/根目录是 home/

尝试将您的 htaccess 移动到 www 服务器的根目录,然后重试

于 2012-05-06T22:34:46.790 回答
0

这就是我的所有错误 - 配置错误。

我在错误的文件夹下“AllowedOverride”。

于 2012-05-06T22:54:18.000 回答