.htaccess ModRewrite规则适用于::1,但不适用于生产服务器

.htaccess ModRewrite规则适用于::1,但不适用于生产服务器,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,经过几个小时的努力,希望某人能帮助 我有这样的URL: www.domain.com/entry/some-unimportant-text-788 我想改写为: www.domain.com/entry.php?entryID=788 www.domain.com/entry.php/some-unimportant-text-788 我的规则是这样的: RewriteRule ^entry/.+?-([1-9][0-9]*)$ entry.php?ent

经过几个小时的努力,希望某人能帮助

我有这样的URL:

    www.domain.com/entry/some-unimportant-text-788
我想改写为:

    www.domain.com/entry.php?entryID=788
    www.domain.com/entry.php/some-unimportant-text-788
我的规则是这样的:

    RewriteRule ^entry/.+?-([1-9][0-9]*)$ entry.php?entryID=$1 [L]
但它被改写为:

    www.domain.com/entry.php?entryID=788
    www.domain.com/entry.php/some-unimportant-text-788
因此它根本没有抓住“([1-9][0-9]*)”部分。我错在哪里?也许这只是我错过的一件小事。。。g===gle这次不是我的朋友,试了好几个小时


谢谢

尝试在
.htaccess
的开头添加该选项,以禁用多视图:

Options -MultiViews
描述了启用“多视图”选项时的功能:

如果 服务器收到对/some/dir/foo的请求,而/some/dir/foo未收到请求 存在,然后服务器读取目录,查找所有名为 foo.*,并有效地伪造了一个类型映射来命名所有这些 文件,并为其分配相同的媒体类型和内容编码 如果客户点名要求其中一个的话。那么 选择最符合客户要求的,并返回 文件


你提供的信息很少,我们不可能回答这个问题。你在使用某种CMS吗?因为你说你的请求被重写到的第二个URL使用了路径信息“语法”,如果mod_rewrite不可用,这在很多CMS中是很常见的回退。因此,可能是CMS重写了你的URL(可能已经在页面的HTML源代码中了)——但是你所展示的单一重写规则肯定没有。只要直接的php代码!我知道mod_rewrite是可用的;虽然调用了该文件,但没有向其传递entryID:-(该PHP代码是否发出任何重定向,和/或它是否在HTML输出中动态创建链接?没有重定向。我在文件的最顶端进行了var_转储($\u服务器)以查看发生了什么。因此调用了该文件,但“方法错误”那么,您最初请求的URL是什么,以及如何–您将其键入地址栏,您是否在某处跟踪链接…?是的,我也在考虑多视图–但这会发出外部重定向,包括原始路径信息吗?我想多视图只在“内部”起作用。不,当请求的文件不存在时,多视图可以工作。最后说,这是我解决此问题的唯一方法:-)是的,我知道。但这如何解释请求被重写为
www.domain.com/entry.php/some-unimportant-text-788
,正如OP所说的那样?@CBroe在测试中“重写”,而不是在浏览器URL中(我想!),所以你认为我的重写规则中没有打字错误和synatx错误?那么我必须联系我的网站管理员,我想。根据克罗斯的回答,modRewrite似乎真的不能正常工作。带有斜杠的URL显然被视为路径,而不是重写,非常奇怪。。。