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

Php 如何使用htaccess删除URL中的最后一个斜杠?,php,apache,.htaccess,mod-rewrite,Php,Apache,.htaccess,Mod Rewrite,我正在尝试删除URL的最后一个斜杠 我把它放在我的htaccess文件中: RewriteRule ^(.+[^/])/$ http://%{HTTP_HOST}/$1 [R=301,L] 它适用于托管在根目录中的文件(或从数据库生成的页面),但不适用于托管在子目录中的文件 例如,我希望: http://mywebsite.com/dir1/dir2/dir3/index.php 这是: http://mywebsite.com/dir1/dir2/dir3 http://myweb

我正在尝试删除URL的最后一个斜杠

我把它放在我的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
但问题是:

 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]

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

RewriteBase /
这样做:

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]

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

您可以使用
.htaccess
文件中的以下代码删除URL末尾的斜杠

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

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

我刚刚提供了完整的.htaccess,谢谢你的回答谢谢你的回答,但是最后没有
/
的URL被重定向到最后带有
/
的URL。我希望它以另一种方式…这不是发生在这些规则。你清除浏览器缓存了吗?同时告诉你测试时使用了什么URL?