【问题标题】:.htaccess rewrite "?p=" to "/" [duplicate].htaccess 将“?p=”重写为“/”[重复]
【发布时间】:2015-07-29 14:55:03
【问题描述】:

例如:

http://domain.com/comments?p=73819

变成

http://domain.com/comments/73819.

如何在我的 .htaccess 文件中执行此操作?

【问题讨论】:

    标签: regex .htaccess


    【解决方案1】:

    试试:

    Options -Multiviews
    RewriteEngine On
    
    RewriteCond %{THE_REQUEST} \ /comments\?p=([0-9]+)
    RewriteRule ^ /comments/%1? [L,R]
    
    RewriteRule ^comments/([0-9]+)$ /comments?p=$1 [L]
    

    【讨论】:

    • 行得通!只是一个问题,这不会干扰例如$_GET['p'] 请求吗?
    • @frosty 第一条规则将带有查询字符串的请求重定向到没有查询字符串的请求,第二条规则在内部将请求 back 重写为使用查询字符串,因此 php 脚本将能够再次获取p GET 变量
    • 啊,这样链接实际上可以获取信息,因为它们缺少查询字符串。谢谢。
    • 它似乎将它视为一个文件夹,因为除非我使用 ../,否则 CSS 不会加载,此外,当我尝试回显 $_GET['p'] 时,没有任何回显。当我删除规则时,它工作正常
    • @frosty CSS 可能不起作用,因为您通过在 URL 中添加另一个 / 更改了相对 URI 基础。如果您的 css 是使用相对 URL 链接的,则需要将它们全部设为绝对
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 2011-04-12
    • 2016-01-16
    • 2017-05-31
    相关资源
    最近更新 更多