htaccess-网址“文件夹”始终显示“文件夹/?link =文件夹”

时间:2018-11-08 16:11:00

标签: .htaccess

很抱歉,我的问题不清楚。我通过htaccess重写了规则url,它起作用了。所以当我尝试链接现有文件夹的路径时遇到问题。

我的问题:

Redirect url: 'http://localhost/folders' 
But it display: 'http://localhost/folders/?link=folder'

所以,我不希望它显示'?link = folder'。它不显示带有重定向URL的'?link = folder':'http://localhost/folders'

我的htaccess:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^$ index.php [L]

RewriteRule ^([^/]*)/$ index.php?link=$1&%{QUERY_STRING} [L]
RewriteRule ^([^/]*)/([^/]*)/$ index.php?link=$1&action=$2&%{QUERY_STRING} [L]
RewriteRule ^([^/]*)/([0-9]+)/([^/]*)/$ index.php?link=$1&id=$2&action=$3&%{QUERY_STRING} [L]

RewriteRule ^([^/]*)$ index.php?link=$1&%{QUERY_STRING} [L]
RewriteRule ^([^/]*)/([^/]*)$ index.php?link=$1&action=$2&%{QUERY_STRING} [L]
RewriteRule ^([^/]*)/([0-9]+)/([^/]*)$ index.php?link=$1&id=$2&action=$3&%{QUERY_STRING} [L]

RewriteRule !^(public/*|folder/*|index\.php) [NC,F]

请,有人告诉我如何解决。如果我的英语不好我很抱歉。

1 个答案:

答案 0 :(得分:0)

您的问题可能与nodejs8.10有关。如果“文件夹”是文件系统上的物理目录,并且您请求DirectorySlash(不带斜杠),则mod_dir通过301重定向到http://localhost/folders(带斜杠)来“修复” URL。

此mod_dir行为与以下规则相冲突,该规则附加了http://localhost/folders/临时字符串。

?link=folders

此“重写”将被mod_dir转换为外部“重定向”。

您可以尝试通过在RewriteRule ^([^/]*)$ index.php?link=$1&%{QUERY_STRING} [L] 文件顶部使用以下指令,防止mod_dir在目录后添加斜杠:

.htaccess

但是,您现在需要自己管理所有的尾部斜杠,这可能并不简单。

但是,除了上面的内容外,我只在URL的末尾添加一个斜杠,并且仅匹配具有该斜杠的URL,而不是两个(您正在复制指令)。