Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/.htaccess/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.htaccess将所有子目录重定向到根目录(类)_.htaccess_Mod Rewrite_Redirect - Fatal编程技术网

.htaccess将所有子目录重定向到根目录(类)

.htaccess将所有子目录重定向到根目录(类),.htaccess,mod-rewrite,redirect,.htaccess,Mod Rewrite,Redirect,这并不像标题所暗示的那样直截了当。我会尽力解释的 我目前正在开发一个基于重写URL的视频网站。 我当前正在使用此规则: 重新启动发动机 重写cond%{REQUEST_FILENAME}-f 重写秒 %{请求文件名}-d 重写规则^(.*)index.php?url=$1[L,QSA] 这用于让用户访问具有以下好看URL的视频: <link href="/css/bootstrap.css" rel="stylesheet"> domain.com/kJbSGe5X而不是domai

这并不像标题所暗示的那样直截了当。我会尽力解释的

我目前正在开发一个基于重写URL的视频网站。 我当前正在使用此规则:

重新启动发动机
重写cond%{REQUEST_FILENAME}-f
重写秒 %{请求文件名}-d
重写规则^(.*)index.php?url=$1[L,QSA]

这用于让用户访问具有以下好看URL的视频:

<link href="/css/bootstrap.css" rel="stylesheet">
domain.com/kJbSGe5X而不是domain.com/?v=kJbSGe5Xdomain.com/index.php?v=kJbSGe5X

现在的问题是,无论何时添加尾部斜杠,css都会中断。 我尝试过在css url前面添加斜线这样的解决方案,如下所示:

<link href="/css/bootstrap.css" rel="stylesheet">

。。。但它不起作用

解决方案是将尾部斜杠(包括尾部斜杠)后的所有url字符串重写为相同的url,而不使用尾部字符串吗?像这样:

domain.com/kJbSGe5X/domain.com/kJbSGe5X/randomchars对此: domain.com/kJbSGe5X-我将如何着手这样做

我想可能有更好的办法解决这个问题,但我对这方面比较陌生。 感谢您的帮助

提前谢谢

--编辑--

我更喜欢这样一种解决方案,即在尾随斜杠之后的所有内容都被重定向到相同的url,而不使用尾随斜杠+尾随斜杠之后的任何字符串。(如果所述url中没有内容)


我可能会把重点放在css问题上——这样的规则对我的网站的设置非常有用

您可以尝试忽略重写规则中的css目录:

RewriteCond %{REQUEST_URI} !^/css/

这并不完全是您所要求的,但是如果您从重写规则中排除了特定目录(可能是/css、/js等等)这样,您就不必担心如何格式化好的/短视图URL以删除斜杠后面的任何内容。

在现有规则之前插入此规则,删除任何后面的斜杠:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} \s/+([^/]+)/.*?\sHTTP/ [NC]
RewriteRule ^ /%1? [R=301,L]

这是我的完整解决方案。在阿努巴瓦的帮助下

从所有URL中删除尾部斜杠:

重新启动发动机

重写cond%{REQUEST_FILENAME}-d

重写cond%{u请求}\s(++?)/+[?\s]

是否重写规则^1?[R=301,L]

将“创建好看的”URL内容限制为只有8个字符(这是视频的每个短链接的长度):

重写cond%{REQUEST_FILENAME}-f

重写cond%{REQUEST_FILENAME}-d

重写规则^(.{8})$index.php?url=$1[QSA,L]


美好的还有没有办法删除后面的斜杠和斜杠后面的任何字符串?
斜杠后面的任何字符串
我相信您指的是查询字符串。为此,请参阅更新的代码。如果可能的话,我希望它像这样工作:domain.com/akkajd/adadoj被重写为domain.com/akkajd。谢谢你的回复!:)我是否必须在实时服务器上才能使用它?我目前在本地主机上,根据更新的规则,当我添加尾部斜杠(以及之后的任何内容)时,我会被重定向到“/HTTP”。我犯了一个错误。现在更正它。你能试试吗?我喜欢这个主意。我试图将它与现有规则一起添加到我的.htaccess中,但似乎无法使其正常工作。添加尾部斜杠时css仍然会中断。我想我做错了什么。你能更新你的帖子并将这条规则与我在专栏中列出的规则结合起来吗?:)我应该补充一点,我是在localhost上做这一切的——如果这与此有关的话。