htaccess都是斜杠,没有斜杠到扩展名(.html)

时间:2016-01-08 15:10:01

标签: regex apache .htaccess mod-rewrite

我在.htaccess

中有以下内容
Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(/|\..+)$
RewriteRule ^ %{REQUEST_URI}.html [L,NC,R=301]

我要做的是将site.com/categorysite.com/category/重定向到site.com/category.html

到目前为止,我的代码正在将/category重定向到/category.html,而不是/category/(Multiple choices shows up)

我想在这一行中对正则表达式做一些解释:

RewriteCond %{REQUEST_URI} !(/|\..+)$

1 个答案:

答案 0 :(得分:0)

您可以使尾随斜杠可选:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /category/

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/.]+)/?$ $1.html [L,R=301]

这个条件:

RewriteCond %{REQUEST_URI} !(/|\..+)$

是匹配请求URI,如果不包含/或DOT加上一些文本。

但是你可以看到,根据我建议的答案,甚至不需要这样做。