【问题标题】:.htaccess redirect all subdirectories to root (Kinda).htaccess 将所有子目录重定向到根目录(有点)
【发布时间】:2014-02-21 08:38:02
【问题描述】:

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

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

重写引擎开启
RewriteCond %{REQUEST_FILENAME} !-f
重写条件 %{REQUEST_FILENAME} !-d
RewriteRule ^(.*) index.php?url=$1 [L,QSA]

这用于让用户访问具有好看网址的视频,如下所示:

domain.com/kJbSGe5X 而不是 domain.com/?v=kJbSGe5Xdomain.com/index.php?v=kJbSGe5X 例如。

现在的问题是,每当添加斜杠时,css 就会中断。 我尝试过在css url前面添加斜杠等解决方案,如下所示:

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

...但它不起作用。

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

domain.com/kJbSGe5X/domain.com/kJbSGe5X/randomchars 到此: domain.com/kJbSGe5X - 我该怎么做?

我想这个问题可能有更好的解决方案,但我对此很陌生。 任何帮助表示赞赏。

提前致谢!

--编辑--

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

我可能已经非常重视 css 问题 - 这样的规则非常适合我的网站设置方式。

【问题讨论】:

    标签: .htaccess mod-rewrite redirect


    【解决方案1】:

    在现有规则之前插入此规则以删除任何尾部斜杠:

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

    【讨论】:

    • 不错!还有一种方法可以删除尾部斜杠 - 以及斜杠之后的任何字符串吗?
    • any string that comes after the slash 我相信你的意思是查询字符串。为此,请参阅更新的代码。
    • 如果可能,我希望它像这样工作:domain.com/akkajd/adadoj 被重写为 domain.com/akkajd。感谢您的回复! :)
    • 我必须在实时服务器上才能使用它吗?我目前在本地主机上,并且使用更新的规则,当我添加斜杠(以及之后的任何内容)时,我被重定向到“/HTTP”。
    • 我搞错了。现在更正了。你可以试试。
    【解决方案2】:

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

    RewriteCond %{REQUEST_URI} !^/css/
    

    这并不完全符合您的要求,但如果您从重写规则中排除特定目录(可能是 /css、/js 等),那么您不必担心格式化您的漂亮/短视图 URL 以删除斜线之后的任何内容或其他任何内容。

    【讨论】:

    • 我喜欢这个主意。我试图将它与现有规则一起添加到我的 .htaccess 中。但我似乎无法让它工作。添加斜杠时,css 仍然会中断。我想我做错了什么。您能否更新您的帖子并将该规则与我在 OP 中列出的规则结合起来? :) 我应该补充一点,我在 localhost 上做所有这些 - 如果这与它有任何关系的话。
    【解决方案3】:

    这是我的完整解决方案。在 anubhava 的帮助下!

    从所有网址中删除尾部斜杠:

    重写引擎开启

    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteCond %{THE_REQUEST} \s(.+?)/+[?\s]

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

    将“创建好看”的网址限制为仅在 8 个字符(即视频的每个短链接的长度)时起作用:

    RewriteCond %{REQUEST_FILENAME} !-f

    RewriteCond %{REQUEST_FILENAME} !-d

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-09
      • 2021-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多