我刚刚上传了一个在一个主机上完美运行的网站,而重写规则的.htaccess文件并不起作用。
在实际位置,.htaccess
文件中包含此内容:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^([A-Za-z\-0-9]+)$ index.php?page=$1 [QSA]
ErrorDocument 404 /index.php
这应该重写
中的网址 www.mysite.co.uk/?page=about
要:
www.mysite.co.uk/about
当我在新主机上尝试它时,它会在浏览器中抛出错误:
内部服务器错误,这是您的脚本错误,请查看错误日志以获取更多信息。
当我检查错误日志时,它说:
[Fri May 30 10:51:53 2014] [alert] [client 87.127.116.49] /domains/m/i/mysite.co.uk/public_html/.htaccess: RewriteRule: cannot compile regular expression '^([A-Za-z\\-0-9]+)$'\n
有人可以帮忙吗?
答案 0 :(得分:0)
我觉得你有点困惑自己?
您为什么要将www.mysite.co.uk/?page=about
写入www.mysite.co.uk/about
这个怎么样:
当访问者到达时:
www.mysite.co.uk/about
他们实际看到的是:
www.mysite.co.uk/?page=about
但客户端网址仍为:
www.mysite.co.uk/about
这仍然是一个替代且不友好的网址:
www.mysite.co.uk/?page=about
你需要这个:
RewriteEngine on
RewriteRule ^(.*)$ index.php?page=$1
请注意,您需要让index.php包含以下内容:
<?php
if (isset($_GET['page']))
{
$pageToDisplay = $_GET['page'];
# I would test at this point, so:
echo 'I am over here, I got this info: '.$_GET['page'].''; exit;
// Display the appropriate page
}
else
{
# I would test at this point, so:
echo 'I got here empty handed...'; exit;
// Display your homepage
}
?>
如果你在此之后获得500,我会确保所有模块都已启用。看起来你正在运行旧版本的Apache,我会确保你正在尝试做的事情在该版本的Apache重写模块中得到完全支持吗?
另见:Pretty URLs with .htaccess Rewriting Tips.
作者将Twitter描述为友好的URL。