【问题标题】:URL rewriting and URL redirectionURL 重写和 URL 重定向
【发布时间】:2016-06-27 22:20:28
【问题描述】:

所以我的 htaccess 中有以下规则:

RewriteEngine on
RewriteBase /blog/
RewriteRule ^post/ post.php [L]

这让我可以通过localhost/blog/post/ 访问localhost/blog/post.php

现在,当我直接输入 localhost/blog/post.php 时,它不会将我重定向到 localhost/blog/post/

有没有办法在 .htaccess 中重定向到 localhost/blog/post/ 或者我应该在 php 代码中这样做?

【问题讨论】:

    标签: php .htaccess url mod-rewrite


    【解决方案1】:

    你需要一个额外的规则来将 /post.php 重定向到 /post

    RewriteEngine on
    RewriteBase /blog/
    #1)--redirect /post.php to /post--#
    RewriteCond %{THE_REQUEST} /post\.php
    RewriteRule ^ /blog/post/ [NC,L,R]
    #2)--rewrite /post to /post.php--#
    RewriteRule ^post/ post.php [L]
    

    【讨论】:

    • 这行得通!你能解释一下重定向部分是如何工作的吗?
    • @Younes 代码的第一部分将浏览器从 /post.php 重定向到 /post/,而第二部分则重写了 /post/ 回到它的原始位置,它发生在内部并且浏览器停留在 /post
    • 这避免了重定向循环,因为THE_REQUEST 只包含有关 original 请求的信息 - 它永远不会改变。
    猜你喜欢
    • 2016-06-18
    • 2015-04-19
    • 1970-01-01
    • 2015-07-28
    • 2011-01-18
    • 2012-04-19
    • 2012-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多