2014-01-29 86 views
1

这不像标题可能暗示的那样直截了当。我会尽力解释。.htaccess将所有子目录重定向到根(Kinda)

我目前正在基于改写的网址的视频网站上工作。 我目前使用这个规则:!

RewriteEngine叙述上
的RewriteCond%{} REQUEST_FILENAME -f
的RewriteCond %{} REQUEST_FILENAME -d
重写规则^ index.php文件(*。)? URL = $ 1 [L,QSA]

这是用来让有好看的url像这样的用户访问视频:

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

现在的问题是,无论何时添加尾部斜线,CSS都会中断。 我试着解决方案,如在CSS的网址前面添加一个斜杠,像这样:

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

...但它不工作。

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

domain.com/kJbSGe5X/domain.com/kJbSGe5X/randomchars这样: domain.com/kJbSGe5X - 我怎么会去这样做呢?

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

在此先感谢!

- 编辑 -

我宁愿一个解决方案,一切之后尾随斜线被重定向到相同的URL没有结尾的斜线+尾随之后的任何字符串。 (如果网址中没有内容)

我可能会非常重视css问题 - 像这样的规则对我的网站设置很有效。

回答

0

你可以尝试忽略你的重写规则的CSS目录:

RewriteCond %{REQUEST_URI} !^/css/ 

这不正是你问什么,但如果你从你的重写规则(可能是/ CSS,/ JS排除特定的目录和等等),那么你就不必担心格式化你的漂亮/短观URL以删除斜线或其他任何东西之后的任何东西。

+0

我喜欢这个想法。我试图将它添加到我的.htaccess与现有rules.But我似乎无法得到它的工作。添加尾部斜线时,CSS仍然会断开。我想我做错了什么。你能否更新你的文章并将该规则与我在OP中列出的规则结合起来? :) 我应该mabye补充说我在localhost上做了所有这些 - 如果这与它有任何关系。 –

1

插入此规则您现有的规则之前删除任何结尾的斜线:

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

不错!是否还有一种方法可以删除尾部斜线 - 以及斜线后面的任何字符串? –

+0

'斜线后面的任何字符串'我相信你的意思是查询字符串。为此,请参阅更新的代码。 – anubhava

+0

我希望它可以这样工作,如果可能的话: ** domain.com/akkajd/adadoj **被重写为** domain.com/akkajd **。 感谢您的回复! :) –

0

这是我的完整解决方案。借助anubhava的一点帮助!从所有URL

删除斜杠:(?+)

RewriteEngine叙述上

的RewriteCond%{} REQUEST_FILENAME -d

的RewriteCond%{THE_REQUEST} \ S/+ [?\ s]

RewriteRule ^%1? [R = 301,L]

约束 “创建好看” 的网址啄仅工作时,它的8个字符(这是每个shortlink用于视频的长度):

的RewriteCond% {REQUEST_FILENAME}!-f

的RewriteCond%{REQUEST_FILENAME}!-d

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

相关问题