【问题标题】:How url works with or without trailing slash using htaccessurl 如何使用 htaccess 使用或不使用斜杠
【发布时间】:2013-10-06 06:54:52
【问题描述】:

我的 PHP 网站中有 htaccess。我想使用带有或不带有斜杠的 url。

以下代码仅适用于尾部斜杠。

Options +FollowSymlinks
RewriteEngine on
RewriteBase /

RewriteRule ^(.*)/$ $1.php [NC,L]

例如www.mydomain.com/index/ --有效
www.mydomain.com/index --无效

如果有人知道我怎样才能在没有斜杠的情况下得到这个?

谢谢

【问题讨论】:

    标签: php .htaccess mod-rewrite


    【解决方案1】:

    你有这个规则:

    RewriteRule ^(.*)/$ $1.php [NC,L]
    

    如果你想匹配它不管/最终使用:

    ErrorDocument 404 /not-found.php
    
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{DOCUMENT_ROOT}/$1.php -f
    RewriteRule ^(.+?)/?$ /$1.php [L]
    

    RewriteCond %{REQUEST_FILENAME} !-f 将停止重新应用相同的规则,因为$1.php 将是一个真实/有效的文件。

    【讨论】:

    • 您好,我也在同一个 htaccess 中使用了ErrorDocument 404 /not-found.php,但它不起作用,换句话说,它没有重定向到显示“内部服务器错误”的未找到页面。
    • 嗨,你能告诉我如何解决这个问题吗?这个问题是我把上面的代码放在htaccess文件中之后出现的。
    • 谢谢,它有效。另一个问题是此代码适用于“www.mydomain.com/service/servicename/”之类的网址吗?以及如何使用不区分大小写的url?
    • 如果你有一个名为 service/servicename.php 的 php 文件,它将起作用。大小写无关紧要,因为捕获正则表达式是 .+?
    【解决方案2】:

    / 之后放置一个? 以使其可选。

    【讨论】:

      【解决方案3】:

      修复将是

      RewriteRule ^(.*)/?$ $1.php [NC,L]
      

      【讨论】:

        【解决方案4】:

        这就是我对类似的东西所做的

        RewriteRule ^(.*)/?$ /$1.php [NC,L]
        

        【讨论】:

          猜你喜欢
          • 2017-06-13
          • 1970-01-01
          • 2015-11-05
          • 1970-01-01
          • 1970-01-01
          • 2021-03-09
          • 1970-01-01
          • 2021-10-02
          • 1970-01-01
          相关资源
          最近更新 更多