这并不像标题所暗示的那样直截了当。我会试着解释一下。
我目前正在制作一个基于重写网址的视频网站。 我目前正在使用此规则:
重写发动机 RewriteCond%{REQUEST_FILENAME}! - f
的RewriteCond %{REQUEST_FILENAME}! - d
RewriteRule ^(。*)index.php?url = $ 1 [L,QSA]
这用于让用户访问具有良好外观的视频,如下所示:
domain.com/kJbSGe5X 而不是 domain.com/?v=kJbSGe5X 或 domain.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,而不会在尾随之后使用尾部斜杠+任何字符串。 (如果所述网址中没有内容)
我可能已经非常重视css问题 - 像这样的规则可以很好地解决我的网站设置问题。
答案 0 :(得分:1)
在现有规则之前插入此规则以删除任何尾部斜杠:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{THE_REQUEST} \s/+([^/]+)/.*?\sHTTP/ [NC]
RewriteRule ^ /%1? [R=301,L]
答案 1 :(得分:0)
您可以尝试忽略重写规则中的css目录:
RewriteCond %{REQUEST_URI} !^/css/
这不是你要求的,但是如果从重写规则中排除特定目录(可能是/ css,/ js等),那么你就不必担心格式化你的好/短视图URL了在斜线或其他任何东西后的任何东西。
答案 2 :(得分:0)
这是我的完整解决方案。在anubhava的帮助下!
从所有网址中删除尾随斜杠:
上的RewriteEngine
RewriteCond%{REQUEST_FILENAME}!-d
RewriteCond%{THE_REQUEST} \ s(。+?)/ + [?\ s]
RewriteRule ^%1? [R = 301,L]
限制“创造美观”的网址,只有在8个字符(这是视频的每个短链接的长度)时才能工作:
RewriteCond%{REQUEST_FILENAME}!-f
RewriteCond%{REQUEST_FILENAME}!-d
RewriteRule ^(。{8})$ index.php?url = $ 1 [QSA,L]