【问题标题】:apache mod_rewrite problem for the urlurl 的 apache mod_rewrite 问题
【发布时间】:2011-06-08 10:02:25
【问题描述】:

当我试图将 url 重写为对搜索引擎友好的时候,但我没有得到正确的形式。例如最初我的网址会是这样的......

http://www.playtoongames.com/getscore.php?game_name=MarioVsSonic

上面的网址是我从 Flash 游戏中请求的。因此,当我从 Flash 游戏请求此 url 时,html 内容以有线格式出现,如 http://www.playtoongames.com/getscore.php?game_name=MarioVsSonic,而不是像这样...... http://www.playtoongames.com/getscore 现在我想把它做成这样的形式......

http://www.playtoongames.com/getscore/MarioVsSonic

为了发生上述事情,我创建了一个 .htaccess 文件并编写了这样的代码......

RewriteRule ^get_name/([^/\.]+)/?$ getscore.php?get_name=$1 [L]

问候, 饿了么

【问题讨论】:

    标签: php mysql apache mod-rewrite


    【解决方案1】:

    您需要在 .htaccess 中开启重写模式。

    RewriteEngine On
    RewriteBase /
    

    然后定义你的重写规则。

    【讨论】:

    • 我写的规则如下..RewriteEngine On 和 RewriteRule ^get_name/([^/\.]+)/?$ getscore.php?get_name=$1 [L]
    • @phphunger :我认为您不需要在正则表达式的开头有^,但这应该可以工作(如果没有,请尝试更改正则表达式,您很快就会发现问题出在哪里)。
    【解决方案2】:

    以下规则将完成重写的工作 http://www.playtoongames.com/getscore/MarioVsSonic 进入 http://www.playtoongames.com/getscore.php?game_name=MarioVsSonic

    RewriteRule ^getscore/([^/\.]+)/?$ /getscore.php?get_name=$1 [L]
    

    比较你的规则,看看你在哪里犯了错误。

    【讨论】:

    • @LazyOne:我确信规则是正确的。意味着它将动态网址重写为静态网址...
    • @phphunger:嗯,我不这么认为。这是您的 URL(部分):getscore/MarioVsSonic 这是您的规则(部分):^get_name/([^/\.]+)/?$。不幸的是,我在该 URL 中没有看到 get_name
    • @LazyOne: 是的,我想进入这个 (playtoongames.com/getscore/MarioVsSonic) 表单,而不是像这样 (playtoongames.com/getscore.php?game_name=MarioVsSonic).. 你能告诉我如何写规则...跨度>
    • @phphunger:规则在我原来的答案中——你试过了吗? RewriteRule ^getscore/([^/\.]+)/?$ getscore.php?get_name=$1 [L]
    • @LazyOne:我已经尝试过您的原始答案,但仍然没有运气.. RewriteRule ^get_name/([^/\.]+)?$ /getscore.php?get_name=$1 [L]
    猜你喜欢
    • 2014-09-20
    • 2012-02-16
    • 2015-03-31
    • 2014-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多