Apache mod_rewrite无法从文件夹中读取

Apache mod_rewrite无法从文件夹中读取,apache,.htaccess,mod-rewrite,redirect,Apache,.htaccess,Mod Rewrite,Redirect,因此,我让它工作,这样如果我执行domain.com/calgary/操作,它将正确地从数据库中读取数据 但是如果我做了domain.com/calgary/test.php,该文件夹读取不正确,因为它认为文件位于/calgary/中,即使它是一个虚拟目录 因此,我可能在/city\u name/文件夹的.htaccess目录中寻找帮助,这样它就可以从/city\u name/目录而不是/calgary/(虚拟)尝试添加以下规则: RewriteEngine On RewriteBase /ci

因此,我让它工作,这样如果我执行
domain.com/calgary/
操作,它将正确地从数据库中读取数据

但是如果我做了
domain.com/calgary/test.php
,该文件夹读取不正确,因为它认为文件位于
/calgary/
中,即使它是一个虚拟目录


因此,我可能在
/city\u name/
文件夹的
.htaccess
目录中寻找帮助,这样它就可以从
/city\u name/
目录而不是
/calgary/
(虚拟)

尝试添加以下规则:

RewriteEngine On
RewriteBase /city_name

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /city_name/index.php?page=$1 [L]

尝试添加以下规则:

RewriteEngine On
RewriteBase /city_name

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /city_name/index.php?page=$1 [L]


应该将
domain.com/calgary/test.php
重写为什么?我希望地址以domain.com/calgary/test.php开头,但test.php将存在于domain.com/city\u name/中,它保存由/calgary/(或作为城市ID)@zerkmsWell动态生成的所有城市文件,
domain.com/calgary/test.php
应该重写到哪个确切地址
mod_rewrite
只是将一个字符串伪重写为另一个/calgary/实际上是/city_name/所以我需要浏览器在URL方面像/calgary/一样思考,但是从/city_name/读取文件的服务器仅仅显示应该重写到的
domain.com/calgary/test.php
的URL有那么困难吗?如果没有进一步的解释,只需简单的url,没有其他任何东西可以重写到
domain.com/calgary/test.php
什么?我希望地址以domain.com/calgary/test.php开头,但test.php将存在于domain.com/city_name/中,它保存由/calgary/(或作为city ID)@zerkmsWell动态生成的所有城市文件,
domain.com/calgary/test.php
应该重写到哪个确切地址
mod_rewrite
只是将一个字符串伪重写为另一个/calgary/实际上是/city_name/所以我需要浏览器在URL方面像/calgary/一样思考,但是从/city_name/读取文件的服务器仅仅显示应该重写到的
domain.com/calgary/test.php
的URL有那么困难吗?没有进一步的解释,只是简单的url,没有其他内容。在该服务器上找不到请求的url/calgary/test-page.php。然而,当我刚做/calgary/时,它会为我吐出城市的详细信息。@Jordie文件
/city\u name/test page.php
存在吗?这就是此行检查的内容:
RewriteCond%{DOCUMENT\u ROOT}/city\u name/%1.php-f
,如果服务器的文档根目录中没有
/city\u name/test page.php
,则条件失败。(请注意,如果它是test-page.php是一个符号链接,则它可能不起作用)。就是那个文件夹。但是,请记住,city_名称是一个隐藏的文件夹。用户不应该看到城市名称,而应该看到卡尔加里*/my-profile.php。但是服务器正在*卡尔加里文件夹中查找文件my-profile.php或test-page.php。所以需要一种不丢失卡尔加里文件夹的重定向方法。这有意义吗?/directory中的My.htaccess文件具有上述代码。你的例子,我会把它放在我上面的代码下面/替换我上面的代码,还是把它放在/city_name/文件夹中。(mod_rewrite初学者)@Jordie这很有意义,当我在apache测试盒上为
city_name
和一些测试php文件创建目录树,并将这些重写规则放在文档根目录中的空白htaccess文件中时,一切都是如此。我去了
/calgary/test.php
,我的浏览器地址栏没有改变,但我收到了
/city\u name/test.php?page=calgary
中的文件。嗨,乔恩,是的,我的目录本身在工作/city\u name/所以我去了domain.com/calgary,它工作了。。。但是,只要我查找doamin.com/calgary/test.php之类的文件,它就会返回一个未找到的文档。未找到请求的URL/calgary/test-page.php在此服务器上未找到。然而,当我刚做/calgary/时,它会为我吐出城市的详细信息。@Jordie文件
/city\u name/test page.php
存在吗?这就是此行检查的内容:
RewriteCond%{DOCUMENT\u ROOT}/city\u name/%1.php-f
,如果服务器的文档根目录中没有
/city\u name/test page.php
,则条件失败。(请注意,如果它是test-page.php是一个符号链接,则它可能不起作用)。就是那个文件夹。但是,请记住,city_名称是一个隐藏的文件夹。用户不应该看到城市名称,而应该看到卡尔加里*/my-profile.php。但是服务器正在*卡尔加里文件夹中查找文件my-profile.php或test-page.php。所以需要一种不丢失卡尔加里文件夹的重定向方法。这有意义吗?/directory中的My.htaccess文件具有上述代码。你的例子,我会把它放在我上面的代码下面/替换我上面的代码,还是把它放在/city_name/文件夹中。(mod_rewrite初学者)@Jordie这很有意义,当我在apache测试盒上为
city_name
和一些测试php文件创建目录树,并将这些重写规则放在文档根目录中的空白htaccess文件中时,一切都是如此。我去了
/calgary/test.php
,我的浏览器地址栏没有改变,但我收到了
/city\u name/test.php?page=calgary
中的文件。嗨,乔恩,是的,我的目录本身在工作/city\u name/所以我去了domain.com/calgary,它工作了。。。但只要我查找doamin.com/calgary/test.php之类的文件,它就会返回一个未找到的文档。