我刚刚上传了一个网站,它在一台主机上运行得很好,而带有重写规则的。htaccess文件不起作用。
在活动位置上,.htaccess
文件包含以下内容:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^([A-Za-z'-0-9]+)$ index.php?page=$1 [QSA]
ErrorDocument 404 /index.php
这会重写
中的url 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
有人能帮忙吗?
我想你把自己弄糊涂了。
为什么要将www.mysite.co.uk/?page=about
写入www.mysite.co.uk/about
这个呢:
当访问者到达:
www.mysite.co.uk/about
他们实际看到的是:
www.mysite.co.uk/?page=about
但是客户端URL仍然是:
www.mysite.co.uk/about
这仍然是一个替代的和不友好的url:
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重写模块中有完全的支持?
也见这里:漂亮的url与。htaccess重写技巧。
作者详细介绍了Twitter,比如友好的url。