【问题标题】:Remove query string and make clean url using htaccess使用 htaccess 删除查询字符串并创建干净的 url
【发布时间】:2014-12-08 21:29:59
【问题描述】:

我有 url 之类的查询字符串。我想从 url 中删除查询字符串,并想制作干净的 url。

www.demo.com/following.php?user=hardik
www.demo.com/fans.php?user=john

这个网址应该是这样的

www.demo.com/hardik/following
www.demo.com/john/fans

OR 应该是这样的

www.demo.com/following/hardik
www.demo.com/fans/john

这可以通过 htaccess 实现吗?我试图在谷歌中找到一个战利品,但仍然没有运气。需要帮助。

更新:

我需要这样的东西

www.demo.com/user/hardik/following/
www.demo.com/user/john/fans/

我试过这样

RewriteRule ^user/([^?]*) following.php?user=$2/ [L,QSA]

【问题讨论】:

    标签: regex apache .htaccess mod-rewrite


    【解决方案1】:

    您可以在DOCUMENT_ROOT/.htaccess 文件中使用此代码:

    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^user/(\w+)/(\w+)/?$ $2.php?user=$1 [L,QSA,NC]
    

    【讨论】:

    • 第一季度。这个 .htaccess 文件的位置是什么? Q2。此文件中是否有更多规则? Q3。当您在浏览器中输入:www.demo.com/following/hardik 时会发生什么?
    • 文件位置在根目录的正确位置。删除 index.php 有一条规则。我看到页面没有加载 CSS。
    • 没有 css 的页面是不同的问题,您需要提供所有详细信息。为此,只需在您的 css、js、图像文件中使用绝对路径,而不是相对路径。这意味着您必须确保这些文件的路径以http:// 或斜杠/ 开头。您可以尝试在页面的 HTML 标头中添加:<base href="/" />,以便从该 URL 而非当前 URL 解析每个相对 URL。
    • 我查看浏览器视图源代码,发现 css/js 中已经有完整的 url
    • 这是重定向到 404。#RewriteRule ^user/([^*]+)/following following.php?user=$1 [L,QSA] 这个代码对我有用。
    【解决方案2】:

    试试这个网址,比如 www.demo.com/following/hardik

    Options +FollowSymLinks
    
    RewriteEngine on
    
    RewriteRule ^([a-zA-Z_-]+)/([a-zA-Z_-]+)/?$ $1.php?user=$2
    

    【讨论】:

      【解决方案3】:

      最后,这对我的最后一个要求有用。可能会帮助别人。

      RewriteEngine On
      RewriteBase /
      
      RewriteRule ^user/([^*]+)/following/$ following.php?user=$1 [L,QSA]
      RewriteRule ^user/([^*]+)/fans/$ fans.php?user=$1 [L,QSA]
      

      【讨论】:

        猜你喜欢
        • 2014-02-09
        • 2013-09-22
        • 1970-01-01
        • 1970-01-01
        • 2013-09-22
        • 1970-01-01
        • 2012-08-26
        • 2021-08-18
        • 1970-01-01
        相关资源
        最近更新 更多