【问题标题】:Rewrite urls ending with _word.html into ?word将以 _word.html 结尾的 url 重写为 ?word
【发布时间】:2013-10-04 23:03:29
【问题描述】:

如何通过 .htaccess 重写 url,使 url 以:

_slides.html

可以通过

访问
?slides

服务器上的典型 url 如下所示:

website.com/directory1/_slides.html

【问题讨论】:

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


    【解决方案1】:

    您的意思是要将 "/$any/_slides.html" 重写为 "/$any/?slides" 吗?那么请试试这个:

    RewriteEngine on
    RewriteRule ^/?([^/]+)/_slides.html$ /$1/?slides [L]
    

    还是相反?像这样(因为我对你的问题感到困惑):

    RewriteEngine on
    RewriteRule ^/?([^/]+)/\?slides$ /$1/_slides.html [L]
    

    最后一次尝试

    现在我知道你想查看 "/$any/?slides" 和 "/$any/slides_html" 的内容,现在尝试确保您的 .htaccess 文件位于您的域的根目录中并尝试以下操作:

    RewriteEngine on
    RewriteCond %{QUERY_STRING} ^slides$
    RewriteRule ^/?([^/]+)/$ /$1/_slides.html [L]
    

    如果这些指令不起作用,则无法重写带有查询字符串的动态目录。

    【讨论】:

    • 两者都不起作用。 _slides.html 部分是不变的。我想重写所有以文件名_slides.html结尾的url
    • 是的,我想将 "/$any/_slides.html" 重写为 "/$any/?slides" 。所以我正在使用您的最佳建议,当我访问“website.com/dir1/?slides”时,我会得到目录索引“website.com/dir1”而不是“website.com/dir1/_slides.html”。有任何想法吗?我只在 .htaccess 中使用您的说明。
    • @Dan 您是否尝试了第二个建议?如果没有,请尝试并告诉我结果。
    • 试过了,同样的结果——服务的目录——不是 _slides.html 文件
    • 哇,伙计,它有效!最后一次尝试有效!你是个超级大师!
    【解决方案2】:

    尝试将此添加到文档根目录中的 htaccess 文件中:

    RewriteEngine On
    RewriteCond %{QUERY_STRING} ^([^=]+)$
    RewriteRule ^([^/])*/$ /$1/_%1.html [L]
    

    这应该接受像http://website.com/directory1/?slides 这样的请求,并在/directory1/_slides.html 提供内容。

    要重定向对_文件的直接访问,您还可以添加:

    RewriteCond %{THE_REQUEST} \ /([^/]*)/_([^.\ \?]+)\.html(\ |$)
    RewriteRule ^ /%1/?%2 [L,R=301]
    

    【讨论】:

    • 它当前返回错误:在此服务器上找不到请求的 URL /t/_slides.html。不确定 /t/ 何时出现,因为我只为您建议的这个条目清理了 .htaccess - 第一个
    • @Dan 您访问的 URL 是什么?您希望获得什么服务?
    • 我正在访问:website.com/directory1/?slides,我希望在此处获得此网址:website.com/directory1/_slides.html
    • @Dan 不知道/t/ 是从那里来的。当我在一个空白的 htaccess 文件中测试这些规则时,我显然会被路由到 /directory1/_slides.html。
    • @Dan 抱歉,我在第二条规则中遗漏了 ?,但我认为这与您的问题无关
    猜你喜欢
    • 2019-09-10
    • 1970-01-01
    • 2014-07-23
    • 1970-01-01
    • 2016-08-29
    • 1970-01-01
    • 2014-05-16
    • 1970-01-01
    • 2021-11-23
    相关资源
    最近更新 更多