2015-02-10 71 views
1

除了在子目录中有一些Wordpress网站(本网站没有引用)之外,没有做任何事情,链接会自动去除.html结尾。我不知道这是为什么,但这是我想要的选项。在.htaccess中强制结尾斜杠不起作用

现在,我无法强制在我的网站中使用斜线。我试过这个选项:

Options -Multiviews 
RewriteCond %{REQUEST_URI} /+[^\.]+$ 
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L] 

我目前还使用了404页(参考404.html):

ErrorDocument 404 /404 

但是,试图访问一个页面,如http://bluecocoa.com/time/的时候,我得到了一个重定向无限循环错误。我使用http://redirectdetective.com追踪重定向。我发现重定向是这样的:

http://bluecocoa.com/time --> http://bluecocoa.com/time/ --> http://bluecocoa.com/404 --> http://bluecocoa.com/404/ --> http://bluecocoa.com/404 --> http://bluecocoa.com/404/ --> infinite loop 

对我来说,它看起来像它通过增加一个固定的页面没有结尾的斜线。出于某种原因,找不到具有结尾斜杠的页面,并重定向到404。404导致无限重定向。

我的网站目录如下:

index.html 
time.html 
/mtc/ [a wordpress directory] 
/posts/ 
blog.html 
etc... 

在解决这些问题的任何帮助将不胜感激!

+0

是'/时间/'也是一个目录? – 2015-02-10 01:56:37

+0

@JonLin不,这是一个.html文件 – 2015-02-10 01:57:20

+0

你是什么规则添加.html? – 2015-02-10 02:28:46

回答

1

有这些规则隐藏.html扩展在你的根.htaccess

Options -MultiViews 
RewriteEngine On 
RewriteBase/

# To externally redirect file.html to /file/ 
RewriteCond %{THE_REQUEST} \s/+(.+?)\.html[\s?] [NC] 
RewriteRule^/%1/ [R=302,L,NE] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=302,NE,L] 

# To internally forward /file to /file.html 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/$1\.html -f [NC] 
RewriteRule ^(.+?)/?$ $1.html [L] 
+1

完美的工作!但仍然有一个问题。我有我的CSS文件和图像引用像这样:'css/style.css'。当我加入你的调整,一切都完美的作品,除了图像和CSS和JavaScript都是断开的链接。有什么想法吗? – 2015-02-10 13:03:12

+1

要解决该问题,请在页面的HTML:''的''部分中添加此项,以便每个相对URL都从该URL解析而不是当前页面的URL。 – anubhava 2015-02-10 13:57:35

相关问题