0

我有一个看起来像这样的 htaccess 文件

Options +FollowSymLinks
Options -Indexes
RewriteEngine on
RewriteBase /website/

# add slashes after link/folder
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://localhost/website/$1/ [L,R=301]

# shorten URLs
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ index.php?page=$1&beta=$2&gamma=$3&delta=$4 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)/([^/\.]+)/?$ index.php?page=$1&beta=$2&gamma=$3 [L]
RewriteRule ^([^/\.]+)/([^/\.]+)/?$ index.php?page=$1&beta=$2 [L]
RewriteRule ^([^/\.]+)/?$ index.php?page=$1 [L]

一切正常,直到它必须向根目录上具有匹配文件夹的链接添加斜杠。

示例:如果我记下www.example.com/live并且 www.example.com/ 中没有名为“live”的文件夹,则脚本将添加一个斜杠。但是,由于有一个名为“live”的文件夹,脚本将再次添加斜杠,但它也会添加这个 ?page=live 所以 URL 看起来像这个www.example.com/live/?page =直播

我的问题是为什么 ?page=something&beta=something&gamma=...等。被添加到后面,我应该如何让它停止?

4

1 回答 1

1
DirectorySlash Off

应该解决这个问题。

编辑:执行 DirectorySlash 通常使用的操作:

RewriteCond %{REQUEST_URI} !(.*)/$
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ /$1/ [L,R=301]
于 2012-05-27T13:56:30.740 回答