我的userdir下有一个php / apache网站,比如http://localhost/~johnny5/
我有/en
个文件夹,其中包含.htaccess
个文件和index.php
个文件:
/home/johnny5/public_html
/somefile.php
/someotherfile.php
/en/
.htacces
index.php
我在/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
处理,但我得到的是/en/foo/bar
找不到的404。
我遗失了什么?
答案 0 :(得分:1)
不确定服务器上的新结构,但请记住一个非常重要的标尺: .htaccess规则仅适用于CURRENT和CHILD(recursivly)目录,不适用于高于.htaccess目录的目录。
所以如果你的.htaccess现在在:
/home/johnny5/public_html/en/.htaccess
它无法使用路径
http://localhost/en/foo/bar
如果服务器上的http://localhost/ root是home /
尝试将您的htaccess移动到www服务器的根目录,然后重试
答案 1 :(得分:0)
所以这就是我的错误 - 错误配置。
我在错误的文件夹下“AllowedOverride”。