mode - rewrite Server Error: RewriteRule:不能编译正则表达式


Mod-Rewrite Server Error: RewriteRule: cannot compile regular expression

我刚刚上传了一个网站,它在一台主机上运行得很好,而带有重写规则的。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。