【问题标题】:Simplifying the URL using ReWrite Rule使用重写规则简化 URL
【发布时间】:2015-11-29 10:01:14
【问题描述】:

我有一个博客,其中有一个categories.php 页面中的类别编号。原始 URL 如下所示:

http://myname.com/articles.php?category=music

我已经简化为:

http://myname.com/articles/music

使用:

RewriteRule ^articles/([\w-]+)/?$       articles.php?cat=$1 [NC,L,QSA]

但是有没有办法将其进一步简化为:

http://myname.com/music

--

更新:

我已经解决了最初的问题,但现在我遇到了另一个问题。我的 .htaccess 是:

Options -MultiViews

DirectoryIndex articles.php

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d    

RewriteRule ^([\w-]+)/?$                        articles.php?cat=$1 [NC,L,QSA]
RewriteRule ^([\w-]+)/([0-9]+)/?$               articles.php?cat=$1&currentpage=$2 [NC,L,QSA]
RewriteRule ^([0-9]+)/([\w-]+)/?$               article.php?id=$1&title=$2 [NC,L,QSA]

RewriteRule ^articles articles.php
RewriteRule ^categories categories.php
RewriteRule ^about about.php
RewriteRule ^feed feed.php
RewriteRule ^privacy privacy.php

当我访问http://myname.com/articleshttp://myname.com/article... 时一切正常,但是当我访问http://myname.com/categorieshttp://myname.com/feed 等时,我被重定向回主页。任何想法为什么会这样?

【问题讨论】:

    标签: regex .htaccess url mod-rewrite rewrite


    【解决方案1】:

    您可以在 DOCUMENT_ROOT/.htaccess 文件中使用此规则:

    RewriteEngine On
    RewriteBase /
    
    # If the request is not for a valid directory
    RewriteCond %{REQUEST_FILENAME} !-d
    # If the request is not for a valid file
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([\w-]+)/?$ articles.php?cat=$1 [L,QSA]
    

    【讨论】:

    • 非常感谢 anubhava,这是一个非常大的帮助,没想到会这么容易。我也以同样的方式简化了我的文章(RewriteRule ^([0-9]+)/([\w-]+)/?$ article.php?id=$1&title=$2 [NC,L,QSA]),但是有什么方法可以让它不显示ID 数字?
    • 显示ID一点也不差,看看Stackoverflow问题的URL就知道了。否则,您将不得不使用标题查询数据库,这效率不高。
    • 是的,我知道,我只是想知道这是否可能,因为我在另一个人的博客上看到过。再次感谢您对我最初的问题的帮助
    • 我遇到了一个小问题,想知道您是否可以帮我一点忙。我已经在编辑过的原始问题中发布了这个问题。谢谢。
    • 在你的 htaccess 中这个通用的 catch all 规则之前保留所有特定的 URL,如类别或提要等
    猜你喜欢
    • 2019-12-18
    • 2014-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    相关资源
    最近更新 更多