尾部斜杠删除打开完整目录

时间:2014-04-22 16:30:43

标签: .htaccess mod-rewrite redirect

我试图删除所有网址的尾部斜杠。无论我尝试什么htaccess脚本行,它总是重定向到整个服务器目录。 example.com/XYZ/奇怪地重定向到example.com/customers/b/7/3/example.com/httpd.www/XYZ - 未找到。

基本上,我没有使用任何子目录,而是根据最后一个斜杠之后的最后一个字符串从数据库中获取数据。所以"未找到"错误是可以的,因为实际上没有现有的文件夹。

我是htaccess的新手,所以我只想尝试我发现的任何一条线。

重写以便任何东西打开index.php而不是文件夹(在没有尾随斜杠的情况下工作正常,引擎打开):

RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?$1
RewriteRule ^([a-zA-Z0-9_-]+)/$ index.php?$1

我使用它来删除斜杠失败了:

RewriteRule ^(.+)/$ /$1 [R=301,L]

所以基本上我要做的是:

  • 以index.php打开任何网址。例如example.com/XY实际上没有重定向但是显示/打开index.php(我想我用两行来实现了这一点)
  • 在这样做的同时,我也尝试删除例如example.com/XY/example.com/XYexample.com/XY/都显示/打开index.php

感谢您的智慧!

1 个答案:

答案 0 :(得分:1)

你可以这样做:

RewriteEngine On

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

RewriteRule ^([\w-]+)/?$ /index.php?$1 [L,QSA]