【问题标题】:.htaccess and making urls friendly.htaccess 并使 url 友好
【发布时间】:2013-11-24 00:23:41
【问题描述】:

我想要做的就是删除我的一部分网址,我认为这是最简单的方法。

这是我的网址目前的样子:

subdomain.domain.com/site/blog/?action=viewArticle&url=$postTile

我要删除:

?action=viewArticle&url=

所以我最终会得到类似的东西:

subdomain.domain.com/site/blog/$postTitle

我尝试了以下方法,但我没有快乐:

RewriteEngine on
RewriteRule   ^ subdomain.domain.com/site/bwc/(blog)/(.*)/$   /bwc/blog/?action=viewArticle&url=$2

请帮忙 - 我想我需要使用 MOD_REWRITE,但我不太确定如何使用。 我还需要一个允许链接友好 URL 的解决方案 - .htaccess/apache 可以这样做吗?

【问题讨论】:

    标签: php apache .htaccess mod-rewrite


    【解决方案1】:
    RewriteRule  ^site/bwc/blog/(.*?)/$ site/blog/?action=viewArticle&url=$1
    

    但请注意,在这种情况下,您的网址将始终必须以 / 结尾才能正常工作

    重写规则所做的基本上是 URI 上 php 的 str_replace。它将运行您在请求 URI 上提供的正则表达式,并将其替换为您也提供的替换。为了更好地理解,您需要精通正则表达式,有人说它本身就是一门语言。 (.*?) 是正则表达式中的捕获组。捕获组可以作为替换字符串中的$\d 访问,其中\d 将是模式中捕获组的连续编号。

    长话短说,如果您发送与正则表达式模式匹配的请求,它将获取它,进行替换并将其发送到服务器,而不是您输入的地址。

    【讨论】:

    • 只是要清楚 - 它是如何工作的?那行代码是否告诉服务器获取 '/blog/' 之后的任何内容并将其放在 blog/?action=viewArticle&url= 的末尾,然后返回结果?
    • 太棒了 - 感谢您的解释。如果我有足够的代表,我会投票赞成你的答案!
    • @php_nub_pp - 只是出于兴趣 - 有没有办法在不需要尾随 '/' 的情况下做到这一点?我担心这可能会造成外部反向链接中断的问题 - 如果它们被放置到位..
    • @Jack Ofc 您只需从模式末尾删除斜线
    猜你喜欢
    • 2015-12-16
    • 2013-08-31
    • 2012-06-03
    • 1970-01-01
    • 2018-09-10
    • 2021-07-23
    • 1970-01-01
    • 2011-05-29
    相关资源
    最近更新 更多