Regex .htaccess在没有斜杠的情况下键入文件夹时如何在文件夹后面添加斜杠
IfModule确实修复了所有链接的斜杠问题。所有链接都有一个/后面的链接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 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
,它将转到filesfiles/?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]