【问题标题】:Using mod_rewrite correctly on Debian server在 Debian 服务器上正确使用 mod_rewrite
【发布时间】:2012-02-01 16:07:01
【问题描述】:

好旧的 mod_rewrite。我好像没弄好。

典型场景:用户输入“http://domain.com/page” 我希望用户被重定向到“http://domain.com/page/page2”

我的 htaccess 文件如下所示:

RewriteEngine   on
RewriteBase     /var/www/

RewriteRule     ^/page/$    page/page2 
RewriteRule     ^/bla/$     page/page2/bla

第一个重写规则有效,另一方面,第二个似乎没有任何效果。任何想法?也许有更好的方法来做到这一点?

还有一个问题: 正如我所说,第一次重写工作得很好,但 url 并不漂亮。 “http://domain.com/page”更改为“http://domain.com/page/page2”。有没有办法保留输入的 url 但仍将用户转发到实际链接?

【问题讨论】:

    标签: apache .htaccess mod-rewrite debian


    【解决方案1】:

    我认为.htaccess 在您的 DocumentRoot 中。 你的/bla 包含看起来如何?这不应该重写浏览器中的 URL。

    使用这个:

    RewriteEngine   on
    RewriteBase     /
    
    RewriteRule     ^(/?)page/?$    $1page/page2 [L]
    RewriteRule     ^(/?)bla/?$     $1page/page2/bla [L]
    

    【讨论】:

    • /bla文件夹有一个index.php文件,应该在/bla加载时加载。你能再解释一下你的代码吗?例如,[L] 参数是干什么用的?
    • @user1183106 Flag [L] 代表 Last rewriterule。意思是,如果匹配,则不处理任何进一步的重写规则。更多参考:Rerwrite Flags
    • 哦,好的。谢谢你。我以为apache会自动做到这一点。是的,代码运行良好,谢谢!只有一件事仍然困扰着我:网址更改为 page/page2,而不是停留在 page.你知道吗,是否也可以使用 mod_rewrite 来解决这个问题?
    • @user1183106 URL 不应更改。仅当您指定了 [R] 标志时,URL 才会更改。
    • @user1183106 还有其他设置吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 2023-03-03
    • 2022-07-09
    • 1970-01-01
    • 2012-11-28
    • 2016-01-16
    • 2014-01-11
    相关资源
    最近更新 更多