如何使用htaccess删除URL中的最后一个斜杠?

时间:2017-03-10 16:58:35

标签: php apache .htaccess mod-rewrite

我正在尝试删除网址的最后一个斜杠。

我把它放在我的htaccess文件中:

RewriteRule ^(.+[^/])/$ http://%{HTTP_HOST}/$1 [R=301,L]

它适用于托管在根目录中的文件(或从数据库生成的页面),但它不适用于托管在子目录中的文件。

例如,我想这样:

 http://mywebsite.com/dir1/dir2/dir3/index.php

进入那个:

 http://mywebsite.com/dir1/dir2/dir3

但它是这样的:

 http://mywebsite.com/[homeserver]/[server]/www/dir1/dir2/dir3

我的htaccess文件出了什么问题?

编辑:这是整个htaccess文件

SetEnv PHP_VER 5
SetEnv REGISTER_GLOBALS 0
Options +FollowSymLinks

RewriteEngine on
RewriteBase /

RewriteRule ^(.+[^/])/$ http://%{HTTP_HOST}/$1 [R=301,L]

### Remove www
RewriteCond %{HTTP_HOST} !^mywebsite\.com$ [NC]
RewriteRule ^(.*)$ http://mywebsite.com/$1 [R=301,L]

### Get the URL in pathinfo mode
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) /index.php/$1

### Redirect index.php to the root
RewriteRule ^index\.php$ http://mywebsite.com/ [R=301,L]

3 个答案:

答案 0 :(得分:0)

尝试在RewriteEngine开启后添加以下规则,并提供完整的.htaccess以供进一步分析。

RewriteBase /

答案 1 :(得分:0)

有这样的话:

SetEnv PHP_VER 5
SetEnv REGISTER_GLOBALS 0
Options +FollowSymLinks

RewriteEngine on
RewriteBase /

### Remove www
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^ http://%1%{REQUEST_URI} [R=301,L,NE]

## Unless directory, remove trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [NE,R=301,L]

### Redirect index.php from anywhere
# remove index.php
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteCond %{REQUEST_URI} ^(.*/)index\.php$ [NC]
RewriteRule ^ %1 [L,R=301,NE]

### Get the URL in pathinfo mode
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php/$0 [L]

确保在测试此更改之前清除浏览器缓存。

答案 2 :(得分:0)

您可以使用<button class="tiles" style="padding: 0px; background: url(http://www.incendia.net/hexquilts/image112.png); background-repeat: no-repeat; color: #FFF" v-if="selectedCategory==''">This is test</button>文件中的以下代码删除网址末尾的斜杠。

.htacccess

我已经使用过这个并且工作正常。