Php htaccess在jquery加载时递归加载

Php htaccess在jquery加载时递归加载,php,jquery,.htaccess,mod-rewrite,Php,Jquery,.htaccess,Mod Rewrite,我有两个网址: http://www.domain.com/catalogo http://www.domain.com/catalogo/item1 我的.htaccess标题当前看起来如下所示: <IfModule mod_rewrite.c> Options +FollowSymLinks -Indexes -Multiviews RewriteEngine On RewriteBase / RewriteCond %{HTTPS} !=o

我有两个网址:

http://www.domain.com/catalogo
http://www.domain.com/catalogo/item1
我的
.htaccess
标题当前看起来如下所示:

<IfModule mod_rewrite.c>
    Options +FollowSymLinks -Indexes -Multiviews
    RewriteEngine On

    RewriteBase /

    RewriteCond %{HTTPS} !=on
    RewriteCond %{HTTP_HOST} !^www\..+$ [NC]
    RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f 

    RewriteRule ^inicio$ index.php [L]
    RewriteRule ^catalogo$ catalogo.php [L]
    RewriteRule ^catalogo/(.+) catalogo.php/$1 [L]
    RewriteRule ^empresa$ empresa.php [L]
    RewriteRule ^contacto$ contacto.php [L]
</IfModule> 
成功加载了第一个URL,但将
/item1
附加到URL后,会使
catalogo.php
递归加载,而不是
ajax\u catalogo.php

似乎加载
ajax\u catalogo.php
符合第二条重写规则,并创建了无休止的循环,但我不知道如何避免它


我应该怎么做呢?谢谢。

首先,在每个规则后添加
[L]
标志肯定对您有好处。
然后,在规则中定义一个
RewriteBase
或使用绝对路径。
最后,在您的情况下,禁用
MultiViews
选项也是一个好主意

您可以将此代码放入htaccess(必须根文件夹中的

注意:在这种情况下,无需担心2条规则的顺序(它们不会相互干扰)


编辑:


选项+FollowSymLinks-索引-多视图
重新启动发动机
重写基/
重写cond%{HTTPS}=在…上
重写cond%{HTTP_HOST}^www\。[北卡罗来纳州]
重写规则^http://www.%{HTTP_HOST}%{REQUEST_URI}[R=301,L]
RewriteCond%{REQUEST_FILENAME}-d[或]
RewriteCond%{REQUEST_FILENAME}-f
重写规则^-[L]
重写规则^inicio$index.php[L]
重写规则^catalogo$catalogo.php[L]
重写规则^catalogo/(.+)$catalogo.php/$1[L]
重写规则^empresa$empresa.php[L]
重写规则^contacto$contacto.php[L]

也许使用[R]标志会有所帮助?它不起作用。谢谢。事实上,我的htaccess看起来很像你的。我在我的问题中更新了它,只是为了澄清。我只添加了L标志。反正也不行。''$_SERVER['REQUEST_URI']')是第一个循环''/catalogo/item1',但对于其余循环'/catalogo/ajax_catalogo.php'。这可能是您的一个线索。好的,您可以在我编辑的答案(
EDIT
part)中看到解决方案。对
的检查不是文件,也不是文件夹
仅适用于
inicio
RewriteCond
仅适用于下一个
RewriteRule
)。这就是为什么在
catalogo/item1
中有一个循环,因为它一次又一次地调用
catalogo.php/item1
。我认为如果你的文件在根文件夹中,你也应该在JS中有
.load(“/ajax\u catalogo.php”)
(带前导斜杠)
$("#contenido_catalogo").load("ajax_catalogo.php", {slu: 'lets_say_item1'}, function(){});
Options -MultiViews

RewriteEngine On
RewriteBase /

RewriteRule ^catalogo$ catalogo.php [L]
RewriteRule ^catalogo/(.+)$ catalogo.php/$1 [L]
<IfModule mod_rewrite.c>
    Options +FollowSymLinks -Indexes -Multiviews

    RewriteEngine On
    RewriteBase /

    RewriteCond %{HTTPS} !=on
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

    RewriteCond %{REQUEST_FILENAME} -d [OR]
    RewriteCond %{REQUEST_FILENAME} -f 
    RewriteRule ^ - [L]

    RewriteRule ^inicio$ index.php [L]
    RewriteRule ^catalogo$ catalogo.php [L]
    RewriteRule ^catalogo/(.+)$ catalogo.php/$1 [L]
    RewriteRule ^empresa$ empresa.php [L]
    RewriteRule ^contacto$ contacto.php [L]
</IfModule>