Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php mod_重写无法识别文件_Php_Sql_Mod Rewrite - Fatal编程技术网

Php mod_重写无法识别文件

Php mod_重写无法识别文件,php,sql,mod-rewrite,Php,Sql,Mod Rewrite,我的mod_重写工作非常出色,但在例如/calgary之后,它无法识别任何内容/ 那么,如果我转到/calgary/login.php,它只看到index.php页面?它无法识别/login.php页面 <IfModule mod_rewrite.c> RewriteEngine On RewriteBase /city_name RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FI

我的mod_重写工作非常出色,但在例如/calgary之后,它无法识别任何内容/

那么,如果我转到
/calgary/login.php
,它只看到index.php页面?它无法识别
/login.php
页面

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /city_name

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

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} /([^\./]+)\.php$
    RewriteCond %{DOCUMENT_ROOT}/city_name/%1.php -f
    RewriteRule ^(.*)/([^\./]+)\.php$ /city_name/?$2.php?page=$1 [L,QSA]
</IfModule>

重新启动发动机
重写基地/城市名称
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则(.*)/?$/city\u name/index.php?页面=$1[L,QSA]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST\u URI}/([^\./]+)\.php$
重写cond%{DOCUMENT\u ROOT}/city\u name/%1.php-f
重写规则^(.*)/([^\./]+)\.php$/city\u name/?$2.php?页面=$1[L,QSA]

您需要交换这两条规则:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /city_name

    # This used to be the 2nd rule
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} /([^\./]+)\.php$
    RewriteCond %{DOCUMENT_ROOT}/city_name/%1.php -f
    # there used to be a "?" here, remove it ----v
    RewriteRule ^(.*)/([^\./]+)\.php$ /city_name/$2.php?page=$1 [L,QSA]

    # this used to be the first rule
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule (.*)/?$ /city_name/index.php?page=$1 [L,QSA]
</IfModule>

重新启动发动机
重写基地/城市名称
#这曾经是第二条规则
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST\u URI}/([^\./]+)\.php$
重写cond%{DOCUMENT\u ROOT}/city\u name/%1.php-f
#这里曾经有一个“?”,把它去掉
重写规则^(.*)/([^\./]+)\.php$/city\u name/$2.php?页面=$1[L,QSA]
#这曾经是第一条规则
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则(.*)/?$/city\u name/index.php?页面=$1[L,QSA]
限制性较小的规则(匹配
(.*)/?$
)将在第二组规则开始执行之前完全匹配
/calgary/login.php
,该规则似乎被重写为
/city\u name/?login.php?page=calgary


这真的是你想要的吗?目标中有两个
。可能您只需要
/city\u name/$2.php?page=$1

尝试从第一个重写规则中删除“L”,这会告诉Apache在找到匹配项时停止处理进一步的规则

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /city_name

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

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} /([^\./]+)\.php$
    RewriteCond %{DOCUMENT_ROOT}/city_name/%1.php -f
    RewriteRule ^(.*)/([^\./]+)\.php$ /city_name/?$2.php?page=$1 [L,QSA]
</IfModule>

重新启动发动机
重写基地/城市名称
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写规则(.*)/?$/city\u name/index.php?页面=$1[QSA]
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST\u URI}/([^\./]+)\.php$
重写cond%{DOCUMENT\u ROOT}/city\u name/%1.php-f
重写规则^(.*)/([^\./]+)\.php$/city\u name/?$2.php?页面=$1[L,QSA]

但问题是它仍然匹配
/calgary/login.php
,并且它被发送到
/city\u name/index.php
,然后第二条规则不被应用,因为它失败了
-f
条件。Jon你有这样的场景吗?我知道你帮我建立了这个的初始版本?不太熟悉mod_rewrite,很不幸。这就是我在这里“确切”做什么的原因,这样我可以访问domain.com/calgary或domain.com/calgary/仍然得到相同的结果,以及domain.com/calgary/login。php@Jordie正如我在回答中所说,你有一些条件/规则,然后是一些条件/第二条规则。这些区块需要交换。在我的回答中,我已经给了你你需要做的事情。还请注意,这可能是一个打字错误。。谢谢Jon-我第一次尝试了,但没有成功-现在效果很好。谢谢非常感谢。@Jordie是的,我编辑了答案以使它更清楚一点,目标中的
肯定会破坏东西。