删除尾部斜杠,然后执行连续的RewriteCond语句

时间:2018-01-09 13:35:46

标签: apache .htaccess mod-rewrite

我的网站有一些以斜杠(/)结尾的链接。以下是我网站的一些示例链接。

  1. www.website/foo /
  2. www.website/bar
  3. 以下是.htaccess文件,

        <IfModule mod_rewrite.c>
    
        RewriteEngine on
    
        RewriteCond "%{DOCUMENT_ROOT}/static/%{REQUEST_URI}.html"  -f
        RewriteRule "^(.+)" "%{DOCUMENT_ROOT}/static/$1.html"  [L]
    
        </IfModule>
    

    在.htaccess文件中,我正在检查静态目录中是否有一个名为REQUEST_URI的html文件。

    www.website/bar工作正常。

    www.website/foo/无效。这很明显,因为有一个尾随斜杠。

    请帮我删除尾部斜杠并检查是否存在REQUEST_URI的html版本。

1 个答案:

答案 0 :(得分:0)

您需要匹配捕获组外部的斜杠。 ^(.+)/将匹配/foo/或以斜杠结尾的任何uri字符串。要匹配非尾部斜杠和尾部斜杠uris,只需将?放在末尾^(.+)/?

使用以下内容更新您的规则:

 RewriteRule "^(.+)/?" "%{DOCUMENT_ROOT}/static/$1.html"  [L]