.htaccess ModRewrite规则适用于::1,但不适用于生产服务器
经过几个小时的努力,希望某人能帮助 我有这样的URL:.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
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显然被视为路径,而不是重写,非常奇怪。。。