.htaccess-删除html扩展名和尾部斜杠

.htaccess-删除html扩展名和尾部斜杠,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我的.htaccess有一些问题。我想从url中删除.html文件扩展名,但我还想删除url末尾的斜杠。这是我当前的.htaccess配置: <IfModule mod_rewrite.c> # Apache Rewrite Rules RewriteEngine On RewriteBase /dev # Redirects request for url ending in a /: RewriteCond %{REQUEST_FILEN

我的.htaccess有一些问题。我想从url中删除.html文件扩展名,但我还想删除url末尾的斜杠。这是我当前的.htaccess配置:

<IfModule mod_rewrite.c>
    # Apache Rewrite Rules
    RewriteEngine On
    RewriteBase /dev

    # Redirects request for url ending in a /:
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)/$ /$1 [L,R=301]

    # Removes .html extension from url
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME}\.html -f
    RewriteRule ^([^\.]+)$ $1.html
</IfModule>

我的问题是,如果我现在进入我的主页dev is temporary directory,那么斜杠会自动添加到url的末尾,这会导致错误。如果我转到另一个页面,假设页面加载正确,但是当我输入最后带有斜杠的url时,会将我重定向到根目录中,而不是只删除尾部斜杠。我不是.htaccess大师,因此我非常感谢您在这方面的帮助。

您不需要\。。这也会起作用:%{REQUEST_FILENAME}.htmlPretty请确保这是mod_dir与url混淆。当请求现有目录时,它将向URL添加斜杠,除非您告诉它这样做。我认为如果你先添加directorysash-off,它应该可以正常工作。但现在无法测试。很遗憾,禁用DirectorySlash无效。当我尝试转到时,我收到一个错误消息:您没有访问此服务器上的/dev的权限。我认为您应该在不读取斜杠的情况下编写第一条规则,如RewriteRule ^.*/$$1[L,R=301]。因为esle rewrite不会将base添加到绝对路径,因为splash说:如果重写到/$1,则重写到相对于根的绝对路径。它将忽略重写基。因为您在测试中使用了永久重定向,所以在看到有关重定向的任何更改之前,您需要完全清除缓存。