【问题标题】:Creating user friendly URL through .htaccess通过 .htaccess 创建用户友好的 URL
【发布时间】:2021-02-25 04:25:59
【问题描述】:

我的网址看起来像 -
http://localhost/user_notes/public/index.php?id=1234.
我想把它变成用户友好的网址,比如
http://localhost/user_notes/public/1234

我的.htaccess 文件看起来像 -

<IfModule mod_rewrite.c>
  RewriteEngine on
  RewriteRule ^/([0-9]+)/ /index.php?id=$1
</IfModule>

所以现在当我在浏览器中使用http://localhost/user_notes/public/1234 位置时,它给了我错误(在此服务器上找不到请求的 URL)。所以上面的 htaccess 文件没有像我预期的那样工作。

我的目录结构如下 -

【问题讨论】:

    标签: apache .htaccess mod-rewrite url-rewriting friendly-url


    【解决方案1】:

    使用您展示的示例,请尝试以下操作。请确保在测试 URL 之前清除浏览器缓存。

    <IfModule mod_rewrite.c>
      RewriteEngine ON
      RewriteBase user_notes/public/
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteRule ^([0-9]+)/?$ index.php?id=$1
    </IfModule>
    

    【讨论】:

    • 感谢您再次帮助我。 (+_+)
    • @Abhishekkamal,欢迎您的欢呼和快乐的学习
    • 如果我使用 #1234(带有哈希的 ID),那么它不会通过 echo $_GET['id'] 给我 ID(因为正则表达式当前正在搜索数字作为 ID)。那么这个问题应该怎么解决呢?
    • @Abhishekkamal,哦,好吧,其实我是从你的问题中找到的 :) 不是问题,试试RewriteRule ^([#]?[0-9]+)/?$ index.php?id=$1 之类的东西,它应该可以正常工作。
    • 不,我仍然没有得到$_GET['id'] 的id 我认为是因为如果他在URL 参数中找到#,浏览器会有一些默认行为
    猜你喜欢
    • 1970-01-01
    • 2014-06-20
    • 2012-04-25
    • 2014-12-04
    • 2011-03-03
    • 2015-01-21
    • 2015-06-02
    • 2017-11-08
    • 2015-07-07
    相关资源
    最近更新 更多