Php 重写规则在web主机升级后不再工作

Php 重写规则在web主机升级后不再工作,php,apache,.htaccess,mod-rewrite,url-rewriting,Php,Apache,.htaccess,Mod Rewrite,Url Rewriting,我的webhost最近将他们的PHP升级到了一个新版本,现在我的一个重定向不再工作 现在不起作用的重定向是: RewriteRule toppers/i-(.*)/n-(.*).html$ toppers.php?i=$1&n=2 我觉得很奇怪,因为我所有其他类似的规则仍然有效 这是我的完整.htaccess文件: Options +FollowSymLinks RewriteEngine on RewriteRule toppers/i-(.*)/n-(.*).html$ topp

我的webhost最近将他们的PHP升级到了一个新版本,现在我的一个重定向不再工作

现在不起作用的重定向是:

RewriteRule toppers/i-(.*)/n-(.*).html$ toppers.php?i=$1&n=2
我觉得很奇怪,因为我所有其他类似的规则仍然有效

这是我的完整.htaccess文件:

Options +FollowSymLinks
RewriteEngine on

RewriteRule toppers/i-(.*)/n-(.*).html$ toppers.php?i=$1&n=2
RewriteRule classes/i-(.*)/n-(.*).html$ classes.php?i=$1&n=2
RewriteRule news/i-(.*)/n-(.*)\.html$ news.php?i=$1&n=2

RedirectMatch 301 ^/cake-topper-pictures-pages/(.*) http://www.caketopper.co.uk/wedding-toppers.php
RedirectMatch 301 ^/cake-topper-picture-pages/(.*) http://www.caketopper.co.uk/wedding-toppers.php
RedirectMatch 301 ^/Cake-Topper-Pictures-Pages/(.*) http://www.caketopper.co.uk/wedding-toppers.php
RedirectMatch 301 ^/feedback-topper-pages/(.*) http://www.caketopper.co.uk/toppers/i-1/n-Couple-on-red-dragon.html
RedirectMatch 301 ^/feedback-toppers/(.*) http://www.caketopper.co.uk/toppers/i-1/n-Couple-on-red-dragon.html

ErrorDocument 404 /404.html
可能有什么问题,我如何解决

为了证明它不是PHP文件,我尝试了:

echo $topperId = $_GET['i'];
echo $topperName = $_GET['n'];
我没有从URL得到任何回应

选项+FollowSymLinks 重新启动发动机

RewriteCond%{REQUEST_URI}toppers/i-./n-…html[NC] 重写规则。*toppers.php?i=%1&n=%2[L,NC]

重写cond%{REQUEST_URI}classes/i-./n-…html[NC] 重写规则。*classes.php?i=%1&n=%2[L,NC]

RewriteCond%{REQUEST_URI}news/i-./n-…html[NC]
重写规则。*news.php?i=%1&n=%2[L,NC]

正如@jeroen所说,这可能是php。尝试用以下内容替换整个文件

<?php
die('Got to PHP');
?>
这将确定您是否正在访问php。如果您关闭了display_errors(显示错误)并出现解析错误或其他错误,您可以将显示的代码放在顶部,但仍然会出现一个空白屏幕。

尝试以下操作:

RewriteCond %{REQUEST_URI} toppers/i-(.*)/n-(.*)\.html [NC]
RewriteRule .* toppers.php?i=%1&n=%2  [L, NC]
与此相反:

RewriteRule toppers/i-(.*)/n-(.*).html$ toppers.php?i=$1&n=2
在你原来的规则中,这个i=$1&n=2应该是i=$1&n=$2,我猜。否则,为什么要抓取两组

如果是这样的话,我不明白的是其他最高规则为什么会起作用。他们也错过了第二回参考中的美元

无论如何,使用建议的规则设置任何传入URL,如您评论中示例中的URL:

http://www.mysite.co.uk/toppers/i-1/n-Couple-on-red-dragon.html

映射到:


http://www.mysite.co.uk/toppers.php?i=1&n=Couple-在红龙上

错误日志中有错误吗?@jeroen我想我没有权限访问它,我不明白如果第5行和第6行工作正常,为什么第4行不能工作?如果php升级,重定向可能正在工作,但php文件中存在错误。您应该删除或注释掉该行,并尝试直接使用webhost控制面板添加重写规则。很多时候,他们都有一个API,可以通过您提供的参数为您实现这一点——希望这证明是有用的。例如,GatorHost有一个接口;每次都很有效。如果这不起作用,请联系网络主机支持人员line@jeroen请查看编辑,我可以确认它不是PHP文件:谢谢,但现在我的其他规则不起作用,也就是说,重写规则类/i-.*/n-.*.html$classes.php?i=$1&n=2重写规则新闻/i-.*/n-.\.html$news.php?i=$1&n=2@imperium2335修改规则,使其仅在存在toppers子目录时使用。仍然没有运气,我已经更新了我的问题,以显示我的htaccess文件的外观。您是否尝试过用我的答案中设置的两行规则替换toppers规则?我对它进行了测试,效果良好。另一方面,您是否注意到第二个back引用缺少$?除非它是一个固定值2,而不是反向参考,否则它是一个应该纠正的错误。