Regex .htaccess在没有斜杠的情况下键入文件夹时如何在文件夹后面添加斜杠

Regex .htaccess在没有斜杠的情况下键入文件夹时如何在文件夹后面添加斜杠,regex,apache,.htaccess,url,mod-rewrite,Regex,Apache,.htaccess,Url,Mod Rewrite,IfModule确实修复了所有链接的斜杠问题。所有链接都有一个/后面的链接 <IfModule mod_rewrite.c> RewriteCond %{REQUEST_URI} /+[^\.]+$ RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L] </IfModule> 我使用了以下代码[原始帖子] Options +FollowSymlinks RewriteEngine On RewriteBase / Rewrit

IfModule确实修复了所有链接的斜杠问题。所有链接都有一个/后面的链接

<IfModule mod_rewrite.c>
RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]
</IfModule>
我使用了以下代码[原始帖子]

Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(website.com)(:80)? [NC]
RewriteRule ^(.*) http://www.website.com/$1 [R=301,L]

RewriteRule ^files/$ files.php$1 [L]
RewriteRule ^files/([A-Za-z0-9-]+)$ files.php?sub=$1 [L]
原始链接是
/files.php?sub=page1
,并更改为
/files/
。这个很好用

但是如果我在url中键入
/files
,它将转到files
files/?sub=page1

如何使
/files
(不带结束斜杠)也转到
/files/
,仅用于文件夹

我尝试了很多东西,但都做不好

<?php
// Load pages
$sub = strtolower($_GET['sub']);
//
if(strlen($sub) > 0){
if(file_exists('files/'.$sub.'.php')){
    include('files/'.$sub.'.php');
}
    else{
        echo "<h1 class=\"titel\">Page not found.</h1>";
        echo "<p>The page doesn't exist or hasn't been found.</p>";
    }
}
else{
    include('files/page1.php');
}
?>

在规则中选择尾随斜杠,如下所示:

Options +FollowSymlinks -MultiViews
DirectorySlash On

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

RewriteRule ^files/$ /files.php? [L]

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^files/([A-Za-z0-9-]+)/?$ /files.php?sub=$1 [L,QSA]

同样重要的是这一行
Options-MultiViews
,它将打开
MultiViews
选项
MultiViews
如果启用,可能会与您的重写规则冲突。

我添加了MultiViews并添加了您的建议/?$,但我仍然得到相同的:files/?sub=page1我还更新了主题start.HIs文件实际目录?这些文件在真实文件夹中是的。不管怎样,如果我键入的文件没有斜杠,它会在末尾添加斜杠(我想要的),但是?sub=page1Ah好的,你在问题中没有告诉我这个事实。让我编辑itOkay,抱歉:)不知道这很重要。“IfModule确实解决了斜杠问题…”不,它没有。IfModule只是说“如果安装了mod_rewrite模块,请运行此部分”。

Options +FollowSymlinks -MultiViews
DirectorySlash On

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]

RewriteRule ^files/$ /files.php? [L]

RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^files/([A-Za-z0-9-]+)/?$ /files.php?sub=$1 [L,QSA]