gpt4 book ai didi

apache - Ajax 和管理请求通过输入 mod-rewrite 规则停止运行

转载 作者:行者123 更新时间:2023-12-02 05:10:44 25 4
gpt4 key购买 nike

我是 url 重写的新手。

我在 .htaccess 文件中写了一些重写规则。我的问题是 ajax 请求和管理部分 (两者都由不同的文件管理,名为 ajax.php 和 admin.php)根本不工作。

这是我试图使用 mod-rewrite 实现的目标:

网址:http://websitename/index.php?page=rr&cn=abc&cid=1
应如下所示:http://websitename/rr/abc/1
在浏览器的地址栏中


URL(只有'page'值):http://websitename/index.php?page=register
应如下所示:http://websitename/register
在浏览器的地址栏中


网址:http://websitename/index.php?page=i&in=banking&iid=12
应如下所示:http://websitename/industry/banking/12
在浏览器的地址栏中


网址:http://websitename/index.php?page=cr&cn=pqr&rid=12
应如下所示:http://websitename/cr/pqr/12
在浏览器的地址栏中

到目前为止,我可以使用以下规则执行此操作,但是对 ajax.php 和 admin.php 以及一些参数 的请求根本不起作用(页面未找到错误)。

Options +FollowSymLinks
RewriteEngine on

RewriteRule ^([A-Za-z0-9-]+)/([^/]+)/([^/]+)$ index.php?page=$1&companyname=$2&companyid=$3%{QUERY_STRING} [L,QSA]

RewriteRule ^([^/]+)$ index.php?page=$1%{QUERY_STRING} [L,QSA]

RewriteRule ^view/([^/]+)/([^/]+)/([^/]+)$ index.php?page=$1&industryname=$2&industryid=$3%{QUERY_STRING} [L,QSA]

RewriteRule ^([^/]*)/([^/]*)/review/([^/]*)$ /index.php?page=$1&companyname=$2&reviewid=$3 [L]

所有三个 mod-rewrite 规则都工作正常,但是通过名为“ajax.php”的单独文件完成的 ajax 请求不起作用(出现页面未找到错误)

即以下 URL 应与上述 mod-rewrite 规则一起使用
http://websitename/ajax.php?action=vote

http://websitename/admin.php?page=home

(不希望文件 ajax.php 和 admin.php 有 mod-rewrite 规则)

但我无法成功地为 ajax.php 和 admin.php 做到这一点

请帮我解决这个问题。我真的坚持这一点。

谢谢

最佳答案

从表面上看,在我看来,您的第二条重写规则将捕获您不想重写的两个 URL。

RewriteRule ^([^/]+)$ index.php?page=$1%{QUERY_STRING} [L,QSA]

这两个 URL 都将在上面的重写规则中被拾取

我建议将您的 htaccess 更改为以下内容,它试图做的就是捕获 admin.php 或 ajax.php 调用并直接发送它们(我没有检查过,但应该没问题):

Options +FollowSymLinks
RewriteEngine on

RewriteRule ^/ajax.php(.*)$ /ajax.php$1 [L,QSA]
RewriteRule ^/admin.php(.*)$ /admin.php$1 [L,QSA]

RewriteRule ^([A-Za-z0-9-]+)/([^/]+)/([^/]+)$ index.php?page=$1&companyname=$2&companyid=$3%{QUERY_STRING} [L,QSA]

RewriteRule ^([^/]+)$ index.php?page=$1%{QUERY_STRING} [L,QSA]

RewriteRule ^view/([^/]+)/([^/]+)/([^/]+)$ index.php?page=$1&industryname=$2&industryid=$3%{QUERY_STRING} [L,QSA]

RewriteRule ^([^/]*)/([^/]*)/review/([^/]*)$ /index.php?page=$1&companyname=$2&reviewid=$3 [L]

关于apache - Ajax 和管理请求通过输入 mod-rewrite 规则停止运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5896457/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com