我的虚拟主机最近将他们的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'];
我没有得到任何回应。
选项+ FollowSymLinks
上的RewriteEngineRewriteCond%{REQUEST_URI} toppers / i - (。)/ n - (。)。html [NC] RewriteRule。* toppers.php?i =%1& n =%2 [L,NC]
RewriteCond%{REQUEST_URI} classes / i - (。)/ n - (。)。html [NC] RewriteRule。* classes.php?i =%1& n =%2 [L,NC]
RewriteCond%{REQUEST_URI} news / i - (。)/ n - (。)。html [NC] RewriteRule。* news.php?i =%1& n =%2 [L,NC]
答案 0 :(得分:0)
正如@jeroen所说,它可能是php。尝试用
之类的东西替换整个文件<?php
die('Got to PHP');
?>
这将确定您是否正在访问php。如果你关闭了display_errors并且有一个解析错误或其他什么,你可以把你显示的代码放在顶部,但仍然会出现空白屏幕。
答案 1 :(得分:0)
试试这个:
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&amp; n = $ 2 。否则¿为什么捕获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-on-red-dragon