【问题标题】:Using .HTACCESS Rewrite Rule使用 .HTACCESS 重写规则
【发布时间】:2013-08-24 08:17:03
【问题描述】:

我正在尝试为我的动态生成的 PHP 站点重写 URL。

我使用以下 GET 将新模板加载到 index.php

localhost/dmk/?req=signin
localhost/dmk/?req=useraccount

我希望这些链接显示为:

localhost/dmk/signin
localhost/dmk/useraccount

但对于我的一生,我无法弄清楚如何做到这一点。我尝试的一切要么产生 500 内部服务器错误,要么根本没有效果。

我一定错过了RewriteRule 的意思。

【问题讨论】:

    标签: apache .htaccess mod-rewrite url-rewriting


    【解决方案1】:

    您应该在这个方向阅读一些文档。我知道一开始写规则有点令人沮丧,但它变得更容易了。写规则需要学习正则表达式(可以从这里开始:http://www.regular-expressions.info/

    至于你需要的规则,它们是这样的:

    RewriteEngine On
    
    RewriteRule ^signin$ index.php?req=signin [L,QSA]
    RewriteRule ^useraccount$ index.php?req=useraccount [L,QSA]
    

    RewriteRule ^(signin|useraccount)$ index.php?res=$1 [L,QSA]
    

    你可以把你用过的规则贴出来,也许有人会解释你做错了什么。

    【讨论】:

    • 这没有任何作用。
    • 如果您的 htaccess 不在 dmk/ 中,您应该更改规则,例如 ^dmk/signin$ dmk/index.php?req=signin
    【解决方案2】:

    试试这个

    Options +FollowSymLinks -MultiViews
    RewriteEngine on
    RewriteBase /
    
    RewriteCond %{REQUEST_FILENAME} !-d # not a dir
    RewriteCond %{REQUEST_FILENAME} !-f # not a file
    RewriteRule ^dmk/(.+)$ dmk/?req=$1 [NC,QSA,L]
    

    这会将任何与现有文件或目录不冲突的 URL(如 /dmk/page)重定向到 /dmk/?req=page。我假设您的 index.php/dmk 目录中。

    【讨论】:

    • 这给了我一个 500 内部错误。
    • 你的 htaccess 文件在什么位置?
    猜你喜欢
    • 1970-01-01
    • 2012-02-25
    • 2011-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多